Pythonで複数のリストを同時に反復処理する方法:zip()関数の使い方
Pythonで複数のリストを同時に反復処理したい場合には、zip()関数が便利です。zip()は任意の個数(n個)のイテラブルを受け取り、タプルのリストを返します。返されるリストのi番目のタプルは、それぞれのイテラブルのi番目の要素を組み合わせて構成されます。
基本的な使用例
L1 = [1, 2, 3, 4] L2 = ['aa', 'bb', 'cc', 'dd'] L = list(zip(L1, L2)) print(L)
出力
[(1, 'aa'), (2, 'bb'), (3, 'cc'), (4, 'dd')]
アルゴリズム
Step 1: まず3つのユーザー入力リストを作成する Step 2: zip()関数を使用する Step 3: タプルを出力する
サンプルコード
次の例では、学籍番号・名前・年齢という3つのリストをユーザー入力から作成し、zip()関数を使って同時に反復処理しています。
# zip()関数を使って3つのリストを反復処理する
import itertools
A = list()
B = list()
C = list()
n = int(input("何件のデータを保存しますか?"))
print("学籍番号を入力してください")
for i in range(n):
k = int(input(""))
A.append(k)
print("名前を入力してください")
for j in range(n):
k1 = input("")
B.append(k1)
print("年齢を入力してください")
for j in range(n):
k1 = int(input(""))
C.append(k1)
print("\nzip()による反復処理")
for (a, b, c) in zip(A, B, C):
print(a, b, c)
実行結果
何件のデータを保存しますか?4 学籍番号を入力してください 56 89 67 34 名前を入力してください yui jkl vm dfg 年齢を入力してください 7 9 6 5 zip()による反復処理 56 yui 7 89 jkl 9 67 vm 6 34 dfg 5
補足:リストの長さが異なる場合の注意点
zip()は、渡されたイテラブルの中で最も短いものに合わせて処理を終了します。そのため、長さの異なるリストを扱うと、余分な要素は無視されます。すべての要素を確実に処理したい場合は、標準ライブラリitertoolsのzip_longest()を使うと、足りない部分を指定した値で埋めながら反復処理できます。
-
Pythonで辞書(dict)を反復処理する4つの基本方法
この記事では、Python 3.x(およびそれ以前のバージョン)における辞書(dict)の反復処理・走査の方法について解説します。 辞書とは、キーと値のペアから構成されるデータ構造です。インデックスには任意のイミュータブル(変更不可能)な型を使用でき、これらは「キー」と呼ばれます。辞書は波括弧 {} の中に定義します。 なお、本記事のサンプルコードでは、意図的に重複したキーを含む辞書を使用しています。Pythonでは辞書のキーは一意である必要があるため、同じキーが複数回定義された場合は、後から定義された値が前の値を上書きします。そのため、実際に保持されるのは「t:o」「r:i」「a:l」「s
-
Pythonのfileinputモジュールで複数ファイルの行を反復処理する方法
Pythonの組み込み関数open()は、1つのファイルを読み書きモードで開き、そのファイルに対して読み書き操作を行うためのものです。複数のファイルをまとめて一括処理したい場合は、Python標準ライブラリのfileinputモジュールを使用します。このモジュールは、ファイルを順番に反復処理する機能を持つFileInputクラスを提供しており、同じ目的のためのヘルパー関数も定義されています。 fileinput.input()関数の基本 このモジュールの主要なインターフェースはinput()関数です。この関数はFileInputクラスのインスタンスを返します。 fileinput.input(