2022/05/22

Python List 初期化 まとめ

 

Python List 初期化

pythonでのlistはデータ型の1種.


初期化

空のlistの宣言

単純に空のlist型を生成します.
list_sample = []
print(list_sample)
>>[]

全要素を指定して初期化

初期化時に任意の値を持ったlistを生成します.
list_sample = [1,2,3,4,5]
print(list_sample)
>>[1, 2, 3, 4, 5]

要素数を指定して初期化

[ A ] * n
* を用いることで データA で埋められたサイズ n のlistが生成できる.
これを使えば要素数を指定してlistを初期化できる
list_sample = [0]*5
print(list_sample)
>>[0, 0, 0, 0, 0]

データを持たせたくない場合は
list_sample = [None]*5
print(list_sample)
>>[None, None, None, None, None]


内包表記で初期化

内包表記と呼ばれる方法で初期化する方法です.繰り返し(for文など)で記述される処理をシンプルにまとめることができます.
list_sample = [i+2 for i in range(5)]
内包表記で表記された上のコードは
list_sample = []
for i in range(5):
	list_sample.append(i+2)
と同じ処理をします.これはシンプルなコーディングに役立ちます.
内包表記を使えば逆順や,階差などもっと複雑なlistも宣言できます.


内包表記を使用したlist生成

自然数からなる数列.

list_sample = [i for i in range(5)]
print(list_sample)
>>[0, 1, 2, 3, 4]

偶数のみの数列.

list_sample = [i*2 for i in range(5)]
print(list_sample)
>>[0, 2, 4, 6, 8]
range関数を使えば多様なlistも宣言できます

mod(3)=3の数からなる数列

list_sample = [i+1 for i in range(0, 20, 3)]
print(list_sample)
>>[1, 4, 7, 10, 13, 16, 19]


内包表記とifを組合わせる

list_sample = [X if A else Y for i in range(10)]
条件Aが真の場合 Xが追加され 条件Aが偽の場合は Yが追加されます.
また,以下のように書くこともできます.
list_sample = [X for i in range(10) if A]
この場合は,条件Aが真の場合のみ Xが追加され 条件Aが偽の場合は 何も追加されません.

list_sample = [i+1 if i%2 == 0 else -1 for i in range(10)]
内包表記では表記された上のコードは
list_sample = []
for i in range(10):
    if i%2 == 0: 
        list_sample.append(i+1)
    else:
        list_sample.append(-1)
と同じ処理をします.

list_sample = list_sample = [i for i in range(20) if i%3 != 0 ]
内包表記では表記された上のコードは
list_sample = []
for i in range(10):
    if i%3 == 0: 
        list_sample.append(i)
と同じ処理をします.

このように内包表記を使えば複雑なlistも宣言できます.


内包表記とif使用したlist生成

3の倍数は除いた数列

list_sample = [i for i in range(5)]
print(list_sample)
>>[0, 1, 2, 3, 4]

偶数のみの数列

list_sample = [i*2 for i in range(5)]
print(list_sample)
>>[0, 2, 4, 6, 8]
range関数を使えばもっと複雑なlistも宣言できます

mod(3)=3の数からなる数列

list_sample = [i+1 for i in range(0, 20, 3)]
print(list_sample)
>>[1, 4, 7, 10, 13, 16, 19]

素数のみからなる数列

import math
def isPrimeNumber(n):
    if n < 2: return False
    for k in range(2, int(math.sqrt(n)) + 1):
        if n % k == 0: return False
    return True
    
list_sample = [i for i in range(20) if isPrimeNumber(i)]
print(list_sample)
>>[1, 4, 7, 10, 13, 16, 19]


他のコンテナデータ型で初期化

既に存在するlistと同じ要素数のlistを用意する
data_A = [2,5,3,7,9]
list_sample_A = [0]*len(data_A)
print(list_sample_A)
>>[0, 0, 0, 0, 0]

0 件のコメント:

コメントを投稿