#python #list
#python #Список
Вопрос:
В Python у меня есть два списка, ids
gos
и Оба имеют одинаковую длину (т. Е. Равное количество строк), но gos может содержать несколько элементов в строке (т. Е. Это Список списков), в то время как ids имеет только 1 элемент в строке
Например:
ids = ['1','2','3']
gos = [['a','b','c'],['d', 'e'], ['f']]
Я хочу распечатать каждый идентификатор в ids столько раз, сколько элементов go в списке gos, за которыми следует один из соответствующих элементов из списка gos, и каждый раз в новой строке.
Я надеюсь, что это прояснит результат, который я ищу:
'1' 'a'
'1' 'b'
'1' 'c'
'2' 'd'
'2' 'e'
'3' 'f'
Комментарии:
1. что у вас есть на данный момент?
Ответ №1:
Используйте zip:
for i,g in zip(ids, gos):
for ge in g:
print i,ge
выходной сигнал:
1 a
1 b
1 c
2 d
2 e
3 f
Ответ №2:
Вы можете попробовать эти простые вложенные циклы for:
for i, e1 in enumerate(ids):
for e2 in gos[i]:
print e1, e2
Вывод:
1 a
1 b
1 c
2 d
2 e
3 f
Примечание: enumerate
Функция используется для подсчета индекса, который будет использоваться для доступа к соответствующему элементу gos
.
Ответ №3:
другой способ сделать это
from itertools import product,imap
ids = ['1','2','3']
gos = [['a','b','c'],['d', 'e'], ['f']]
for i in imap(product,ids,gos):
for j in i:
print j[0],j[1]
Ответ №4:
Еще один способ сделать это..
ids = "1 2 3".split()
gos = ['a b c'.split(), 'c d'.split(), ['f']]
import itertools
ig = [zip([i] * len(g), g)
for i, g in zip(ids, gos)]
for i, g in itertools.chain.from_iterable(ig):
print(i, g)
Ответ №5:
Я надеюсь, что это простой способ сделать это
for i in range(len(gos)):
for k in gos[i]:
print ids[i], k
Вывод
1 a
1 b
1 c
2 d
2 e
3 f