Python | リスト内包表記の使い方

公開日:2021/5/28

Pythonでは,リストの中にループ処理やif文を作成することができる.このような作成方法をリスト内包表記と呼ぶ.以下にリスト内包表記をメインに構文を作成し,その後,他の内包表記(タプル,セット)を作成する.

◆実施環境

Python 3.8.8

■通常の構文からリスト内包表記への書き換え

リスト内包表記にするには,リストの中に以下のように記載する.

“出力 for リスト内の値 in 参照元リスト"

# 1の処理
list2 = [1,2,6,4]
list1 = []
for x in list2:
  list1.append(x)
print(list1)

# 2の処理
list2 = [1,2,6,4]
list1 = [x for x in list2]
print(list1)

■実行結果

# 1の結果
[1, 2, 6, 4]

# 2の結果
[1, 2, 6, 4]

■リスト内包表記を利用した構文の作成

# 1の処理(list2からlist1に,x2にして出力する)
list2 = [1,4,'water','tea',2]
list1 = [x*2 for x in list2]
print(list1)

# 2の処理(list2からlist1に,文字列のみ出力する)
list2 = [1,4,'water','tea',2]
list1 = [x for x in list2 if type(x) == str]
print(list1)

# 3の処理(list2からlist1に,"j"が含まれている値のみ出力する)
list2 = ['coffee','water','tea','juice']
list1 = [x for x in list2 if "j" in x]
print(list1)

# 4の処理(0~20の範囲で3の倍数のみlist1に出力する)
list1 = [x for x in range(20) if x % 3 == 0 and x > 0]
print(list1)

# 5の処理(辞書dic1から値のみlist1に出力する)
dic1 = {1:'water',2:'tea',3:'coffee'}
list1 = [dic1.get(x) for x in dic1]
print(list1)

■実行結果

# 1の結果
[2, 8, 'waterwater', 'teatea', 4]

# 2の結果
['water', 'tea']

# 3の結果
['juice']

# 4の結果
[3, 6, 9, 12, 15, 18]

# 5の結果
['water', 'tea', 'coffee']

■その他内包表記を利用した構文の作成

タプルの場合,丸かっこの前に"tuple"が必要になる.セットの場合,リスト内包表記と同様に記載すれば問題ない.

# 1の処理(タプルを利用した内包表記:丸かっこ前にtupleが必要) 
list1 = [1,2,6,4] 
tuple1 = tuple(x for x in list1) 
print(tuple1) 

# 2の処理(セットを使用した内包表記) 
list1 = [1,2,6,4] 
set1 = {x for x in list1} 
print(set1)

■実行結果

# 1の結果
(1, 2, 6, 4)

# 2の結果
{1, 2, 4, 6}

以上