リスト生成式(第19編)
1578 ワード
リスト(range(0,11))でリストを生成できますが、[1,4,9,16,25,36,49,64,81,100]を生成させると難しいですが、賢いあなたはループを考えています.
これでもいいです.素晴らしいです.しかしPythonは、コード1行で解決するより簡単な方法を提供しています.
これがリスト生成式です.生成する必要がある要素i*iを前に置いて、後ろにforループが付いていて、とても簡単です.もう1つの例を見て、リスト内のすべての要素を大文字にします.
if文を追加してフィルタリングすることもできます.
これは次のようなものです.
それだけでなく、リスト生成式は多層ループを実現することもできます.
次のようになります.
リスト生成式を用いて簡潔なコードを書くことができる.
リスト生成式は、listを2つの変数で生成することもできます.
L = []
for i in range(0,11):
L.append( i * i )
これでもいいです.素晴らしいです.しかしPythonは、コード1行で解決するより簡単な方法を提供しています.
>>> [i * i for i in range(0, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
これがリスト生成式です.生成する必要がある要素i*iを前に置いて、後ろにforループが付いていて、とても簡単です.もう1つの例を見て、リスト内のすべての要素を大文字にします.
>>> L = ['Hello', 'World', 'IBM', 'Apple']
>>> [s.upper() for s in L]
['HELLO', 'WORLD', 'IBM', 'APPLE']
if文を追加してフィルタリングすることもできます.
>>> [i *i for i in range(0,11) if (i * i) % 2 == 0 ]
[0, 4, 16, 36, 64, 100]
これは次のようなものです.
L = []
for i in range(0, 11):
if (i * i) % 2 == 0:
L.append(i * i)
それだけでなく、リスト生成式は多層ループを実現することもできます.
>>> [m + n for m in '123' for n in 'abc']
['1a', '1b', '1c', '2a', '2b', '2c', '3a', '3b', '3c']
次のようになります.
L = []
for m in '123':
for n in 'abc':
L.append(m + n)
リスト生成式を用いて簡潔なコードを書くことができる.
リスト生成式は、listを2つの変数で生成することもできます.
>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
>>> [k + '=' + v for k, v in d.items()]
['y=B', 'x=A', 'z=C']