Python:2つ以上の反復可能オブジェクトを順番に反復する方法(zipではない)[複製]

Aug 21 2020

たとえば、リストと文字列など、任意のタイプの2つの反復可能オブジェクトがあるとします。

a = [1, 2, 3]
b = "abc"

だまさずにaとbを順番に(zipのように並列ではなく)反復するPythonフレンドリーで簡潔な方法はありますか(ここでの考え方は、aとbは反復可能であることがわかっているものであれば何でもかまいません)

したがって、次のようなものはありません。

for i in a + list(b):

理想的には私は何かを持っているでしょう:

for i in something(a, b):
    print(i)

それはすることと同等です

for i in a:
    print(i)
for i in b:
    print(i)

回答

1 Jab Aug 21 2020 at 04:46

あなたが探している「何か」はitertools.chain:

from itertools import chain

for i in chain(a, b):
    print(i)

1
2
3
a
b
c
1 lxop Aug 21 2020 at 04:46

あなたが探しているのはitertools.chain:https://docs.python.org/3.8/library/itertools.html#itertools.chain

あなたはそれをこのように使うでしょう:

import itertools
a = [1,2,3]
b = "abc"
for i in itertools.chain(a, b):
    print(i)

を生成します

1
2
3
a
b
c
Code-Apprentice Aug 21 2020 at 04:46

itertools.chain()がそのトリックを行います。このようなものを探しているときは、このライブラリを覚えておく必要があります。