zip関数【builtin】
説明:zip型インスタンスを生成するビルトイン関数である。このインスタンスは1つにまとめられた複数のイテラブルオブジェクトから順に取り出した値を要素に持つタブルを生成する。ジェネレータ型のオブジェクトである。
書式:
zip( 引数1,引数2、‥ )
戻り値:zip型オブジェクト
/icons/hr.icon
単一のイテラブルオブジェクトをでfor文を制御する例。
code:zip1.py
data = 1, 2, 3, 4, 5
for i in data:
print(i)
複数のイテラブルオブジェクトを束ねて利用することを意図して次のようなプログラムを作成した。しかし意図した通りに動作しない。
code:zip2.py
data1 = 1, 2, 3, 4, 5
data2 = -1, -2, -3, -4, -5
for i in data1, data2:
print(i)
1番目の data1 のループが終了したのちに、2番目に与えた data2 のループが行われているようだ。
このような場合には zipオブジェクトを利用する。これは複数のイテラブルオブジェクトから取り出した値からなるタプルを順に生成する。
code:zip3.py
data1 = 1, 2, 3, 4, 5
data2 = -1, -2, -3, -4, -5
data = zip(data1, data2)
for i in data:
print(i)
次のように、より短く記述することもできる。
code:zip3.py
data1 = 1, 2, 3, 4, 5
data2 = -1, -2, -3, -4, -5
for i in zip(data1, data2):
print(i)
タプルにまとめられた複数の要素はをアンパック代入により取り出す例。
code:zip4.py
name = 'Taro', 'Hana', 'Jiro'
weight = 65.3, 55.1, 59.9
age = 21, 23, 18
for i, j, k in zip(name, age, weight):
print(i,'さん:' ,j, k)
更に、zip型インスタンスをenumerate関数【builtin】に渡すことにより、値の取り出しと同時に、連番を自動生成するenumerate型インスタンスを生成することができる。
code:zip5.py
name = 'Taro', 'Hana', 'Jiro'
weight = 65.3, 55.1, 59.9
age = 21, 23, 18
for n, (i, j, k) in enumerate(zip(name, age, weight)):
print('No.', n + 1, i,'さん:' ,j, k)