Python: como iterar em 2 iteráveis ​​sequencialmente (não zip) [duplicado]

Aug 21 2020

Imagine que tenho 2 iteráveis ​​de qualquer tipo, digamos, por exemplo, lista e string:

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

Existe uma maneira concisa amigável de python para iterar em aeb sequencialmente (não em paralelo como com zip) sem truques (a ideia aqui é que aeb podem ser qualquer coisa que sabemos que são iteráveis)

Portanto, não há coisas como:

for i in a + list(b):

Idealmente, eu teria algo:

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

isso seria equivalente a fazer

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

Respostas

1 Jab Aug 21 2020 at 04:46

O "algo" que você está procurando é 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

O que você está procurando é itertools.chain:https://docs.python.org/3.8/library/itertools.html#itertools.chain

Você o usaria assim:

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

que produz

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

itertools.chain () faz o truque. Você deve manter esta biblioteca em mente quando estiver procurando por coisas como esta.