Python: cara mengulang lebih dari 2 iterabel secara berurutan (bukan zip) [duplikat]
Bayangkan saya memiliki 2 iterable dari jenis apa pun, katakanlah misalnya daftar dan string:
a = [1, 2, 3]
b = "abc"
Apakah ada cara ringkas ramah python untuk mengulang a dan b secara berurutan (tidak paralel seperti dengan zip) tanpa menipu (idenya di sini adalah bahwa a dan b bisa menjadi apa saja yang kita tahu itu iterable)
Jadi tidak ada yang namanya:
for i in a + list(b):
Idealnya saya akan memiliki sesuatu:
for i in something(a, b):
print(i)
itu akan sama dengan melakukan
for i in a:
print(i)
for i in b:
print(i)
Jawaban
"Sesuatu" yang Anda cari adalah itertools.chain:
from itertools import chain
for i in chain(a, b):
print(i)
1
2
3
a
b
c
Yang Anda cari adalah itertools.chain
:https://docs.python.org/3.8/library/itertools.html#itertools.chain
Anda akan menggunakannya seperti ini:
import itertools
a = [1,2,3]
b = "abc"
for i in itertools.chain(a, b):
print(i)
yang menghasilkan
1
2
3
a
b
c
itertools.chain () melakukan triknya. Anda harus mengingat perpustakaan ini ketika Anda mencari hal-hal seperti ini.