Python初心者向け、zip関数の使い方
複数のリストから要素を一つずつ取り出すときに便利な、map関数のキホン的な使い方
ナノネ、今回はPythonの組み関数『zip』のキホン的な使い方を学ぼう。
zip関数?、コードの中で使われているのはよく見かけるけど、自分では使ったことないなぁ。
モモノキ、zip関数はどんなことができるの?
zip関数は複数のリストから一つずつ要素を取り出して、タプル形式にまとめた値を返してくれるよ。1番目の要素のまとまり、2番目の要素のまとまり...といった感じで。
なんのこっちゃ、よくわかんないなぁ?
コードで確認したほうが、分かりやすいかも。実際にzip関数を使ってみよう。
list_1 = [1, 2, 3, 4, 5]
list_2 = [10, 20, 30, 40, 50]
list_3 = ['A', 'B', 'C', 'D', 'E']
for t in zip(list_1, list_2, list_3):
print(t)
なるほど。zip関数の引数にリストを複数渡すと、順番に1セットずつ取り出してくれるのね。
うん。リストの代わりにタプル使っても、リストとタプルを混在させてもOKだよ。
list_1 = [1, 2, 3, 4, 5] # list
list_2 = (10, 20, 30, 40, 50) # tuple
list_3 = ('A', 'B', 'C', 'D', 'E') # tuple
for t in zip(list_1, list_2, list_3):
print(t)
zip関数で出力される値はタプル形式になっているよ。型を確認してみよう。
list_1 = [1, 2, 3, 4, 5] # list
list_2 = (10, 20, 30, 40, 50) # tuple
list_3 = ('A', 'B', 'C', 'D', 'E') # tuple
for t in zip(list_1, list_2, list_3):
print(type(t))
取得したタプルはインデックスでアクセスできるから、あとはお好みの処理を実行できるよ。たとえばこんな感じで。
fruits = ['apple', 'orange', 'grape', 'melon', 'peach']
prices = [150, 80, 300, 700, 200]
counts = [2, 5, 3, 1, 3]
for t in zip(fruits, prices, counts):
total_price = t[1] * t[2]
print("{0} : {1} x {2} = {3}".format(t[0], t[1], t[2], total_price))
今は具体的なケースが思いつかないけど、いろいろと使えそうだね。
zip関数の結果は、複数の変数名を指定して直接受け取ることもできるよ。こっちの方が扱いやすいかも。
fruits = ['apple', 'orange', 'grape', 'melon', 'peach']
prices = [150, 80, 300, 700, 200]
counts = [2, 5, 3, 1, 3]
for fruit, price, count in zip(fruits, prices, counts):
total_price = price * count
print("{0} : {1} x {2} = {3}".format(fruit, price, count, total_price))
下のタプルの使い方と一緒だよ。
(a , b, c) = (1, 2, 3)
print(a)
print(b)
print(c)
a , b, c = (1, 2, 3) # 左辺のカッコは省力可
print(a)
print(b)
print(c)
zip関数の使い方は少し覚えたかも。今度から使ってみるよ。
最後に注意だけど、zip関数に渡すリストの長さがバラバラのときは、一番短いリストに合わせて処理されるよ。
list_1 = [1, 2, 3, 4, 5] # 要素5個
list_2 = [6, 7, 8] # 要素3個
list_3 = [9, 10, 11, 12] # 要素4個
for t in zip(list_1, list_2, list_3):
print(t)
上の例だと、一番短いリストの要素数が3だから、3回分しか処理されないんだね。
今回のzip()関数の練習は以上で。またね!
お疲れさまでした。またね!
0 件のコメント :
コメントを投稿