Python: cara mengulang lebih dari 2 iterabel secara berurutan (bukan zip) [duplikat]

Aug 21 2020

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

1 Jab Aug 21 2020 at 04:46

"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
1 lxop Aug 21 2020 at 04:46

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
Code-Apprentice Aug 21 2020 at 04:46

itertools.chain () melakukan triknya. Anda harus mengingat perpustakaan ini ketika Anda mencari hal-hal seperti ini.