🐈

Act 04. Pythonの基本的な文法

に公開

はじめに

Act 01. AIで外国為替を自動売買するまでの道のりをベースに学習を進めて行く。

Pythonの基本的な構文について学習する必要があるので、一通りまとめて行こうと思う。

今更こんな学習する必要あるのかな…と思ったが、計画を立てた以上しっかりと順に学習していく。

かなり雑だしPythonの達人ではないので他の記事を見た方がためになるかもしれないが、もしかしたら役に立つかもだから目次から気になるところは見てみてね。

変数

変数って何ですか?って人は別の記事を見ることを推奨。
自分の中では理解しているつもりだから変数についての説明は割愛。

この記事ではスコープについて記載しておく。

スコープ

Pythonの変数のスコープは、変数が有効な範囲を指し、主に以下のようなスコープがある。

  1. ローカルスコープ
    関数内で定義された変数は、その関数内でのみ有効。

    def my_function():
        x = 10  # ローカル変数
        print(x)
    
    my_function()
    # print(x)  # エラー: xはここでは定義されていない
    
  2. グローバルスコープ
    モジュール全体で有効な変数で、関数の外で定義される。
    【Python】グローバル宣言とグローバル変数が分かりやすかった。

    x = 20  # グローバル変数
    
    def my_function():
        print(x)  # グローバル変数にアクセス
    
    my_function()  # 出力: 20
    
  3. エンクロージングスコープ
    ネストされた関数内で、外側の関数で定義された変数にアクセスできる。

    そもそも関数をネストできるってことを知らなかった。
    あまり使う機会はなさそうだけど、一応記憶の片隅に残しておく。

    def outer_function():
        y = 30  # エンクロージング変数
    
        def inner_function():
            print(y)  # outer_functionのyにアクセス
    
        inner_function()
    
    outer_function()  # 出力: 30
    
  4. ビルトインスコープ
    Pythonのビルトイン関数や例外などにアクセスできる。これらは常にどのスコープからでも利用可能。
    例えばprint()Trueなど。

データ型

Pythonの主要なデータ型について、各型のサンプルと簡単な説明を載せておく。

整数 (int)

整数型は、小数点を持たない数字を表す。

x = 42
print(x)  # 出力: 42

浮動小数点 (float)

浮動小数点型は、実数(小数点を持つ数字)を表す。

y = 3.14
print(y)  # 出力: 3.14

文字列 (str)

文字列型は、文字のシーケンスを表す。
シングルクォートまたはダブルクォートで囲まれる。

name = "Alice"
print(name)  # 出力: Alice

リスト (list)

リスト型は、任意のデータ型の要素を順序付けて保持する可変のコレクション。

fruits = ["apple", "banana", "cherry"]
print(fruits)  # 出力: ['apple', 'banana', 'cherry']

辞書 (dict)

辞書型は、キーと値のペアを保持する可変のコレクションで、キーはユニークでなければならない。

person = {"name": "Bob", "age": 30}
print(person)  # 出力: {'name': 'Bob', 'age': 30}

セット (set)

セット型は、ユニークな要素を無順序で保持するコレクションで、重複は許可されない。

unique_numbers = {1, 2, 3, 3, 4}
print(unique_numbers)  # 出力: {1, 2, 3, 4}

setとlistの比較

以下に、セット(set)とリスト(list)の比較を載せておく。

特徴 セット (set) リスト (list)
順序 無順序 順序あり
重複 重複を許可しない 重複を許可する
可変性 可変 可変
インデックス インデックスがない インデックスを持つ
検索速度 高速(ハッシュテーブルを使用) 比較的遅い(リニアサーチ)
主要な操作 和集合、積集合、差集合が簡単 要素の追加、削除、スライスが容易
使用例 ユニークな要素の管理、集合演算 順序を保つリスト、重複を持つデータ

AIに学習させる場合は高速な処理を必要とする可能性があるからsetも使う可能性あり?

いつもlistでコード書いてたから良い勉強になった。
気が向いたらsetについての記事を載せるかも?

制御構造

Pythonの制御構文には、主に以下のようなものがある。

条件分岐 (if文)

条件に応じて処理を分岐させるために使用する。

if 条件:
    # 条件が真の場合の処理
elif 別の条件:
    # 別の条件が真の場合の処理
else:
    # どちらの条件も満たさない場合の処理

繰り返し (for文)

リストやタプルなどのシーケンスの各要素に対して処理を行う。

以下の場合はシーケンスの内容が順に変数に格納されていく。

for文内で変数を参照することが可能。

for 変数 in シーケンス:
    # 各要素に対する処理

繰り返し (while文)

条件が真である限り繰り返し処理を行う。

while 条件:
    # 条件が真である間の処理

ループ制御

  • break: ループを即座に終了する。
  • continue: 現在の反復をスキップし、次の反復に移る。

リスト内包表記

条件を加えたリストの生成が可能。

新しいリスト = [for 変数 in シーケンス if 条件]

リスト内包表記の具体例は以下の通り。

  1. 基本的なリスト内包表記
    1から10までの整数のリストを生成する例

    numbers = [x for x in range(1, 11)]
    print(numbers)  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
  2. 条件を加えたリスト内包表記
    偶数だけを抽出する例

    even_numbers = [x for x in range(1, 11) if x % 2 == 0]
    print(even_numbers)  # [2, 4, 6, 8, 10]
    
  3. 文字列のリストの変換
    文字列のリストを大文字に変換する例

    words = ["apple", "banana", "cherry"]
    uppercase_words = [word.upper() for word in words]
    print(uppercase_words)  # ['APPLE', 'BANANA', 'CHERRY']
    
  4. ネストされたリスト内包表記
    2次元リストのフラット化(リストのリストを1つのリストにする)例

    matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    flattened = [num for row in matrix for num in row]
    print(flattened)  # [1, 2, 3, 4, 5, 6, 7, 8, 9]
    

さいごに

本当に基本的な事だったけど、意外としっかり理解出来てないものもあった。

次は関数とモジュールについてやるよ。

ではまた

Discussion