[python]リスト内包表記
リスト内包表記
あるリストがありそれを元に新しいリストを作成するにはfor文を使うと次のようになります。
#初期化
list_1=[]
for i in range(5):
list_1.append(i**2)
print(list_1) #[0, 1, 4, 9, 16]
これをリスト内包記法を使うと次のように1行で表せます。
[式 for 変数名 in イテラブルオブジェクト]
具体的には次のようになります。
print([i**2 for i in range(5)]) #[0, 1, 4, 9, 16]
次のようにもできます。
print([i+i for i in ['a','b','c']]) #['aa', 'bb', 'cc']
if文を使った内包表記
内包表記で3項演算子を使うと次のようになります。
print(["even" if i%2==0 else "odd" for i in [0,1,2] ] #['even', 'odd', 'even'])
これはfor文で取り出した値を3項演算子を使って処理をさせます。
3項演算子なのでelseを省くことはできません。
またif文付き内包表記でリストの抽出ができます。
print([i**2 for i in [0,1,2,3,4,5] if i<4] #[0, 1, 4, 9])
これは内包表記で作成したもののうちif文が真になる値だけが有効になります。
map関数でリスト作成
あるリストから新しいリストの作成はmap関数を使ってもできます。
print(list(map(lambda x: x * x,[0,1,2,3,4]))) #[0, 1, 4, 9, 16]
map関数はmapクラスを返すのでリスト型に変換する必要があります。
これは内包表記を使って
print([i**2 for i in [0,1,2,3,4]]) #[0, 1, 4, 9, 16]
と同じです。
filter関数でリスト抽出
あるリストから要素を抽出するにはfilter関数を使っても出来ます。
print(list(filter(lambda x: x<4,[0,1,2,3,4]))) #[0, 2, 4]
filter関数はfilterクラスを返すのでリスト型に変換する必要があります。
これはif文付きの内包表記を使って
print([i for i in [0,1,2,3,4] if i%2==0]) #[0, 2, 4]
と同じです。
ページ情報
タイトル | [python]リスト内包表記 |
URL | https://www.nomuramath.com/tunko3we/ |
SNSボタン |
[python]for文の基本
🔰[python]print文で色をつけてみよう

[python]集合型同士の和集合・積集合・差集合・対称差集合
print({'a','b'}|{'b','c'}) #{'c', 'a', 'b'}
[python]if文の基本的な使い方