我正在尝试加入2个列表,以便第一个列表中的值按顺序连接到第二个列表中的值,然后在列表中的一个项目耗尽时再次加入...
worker_tables=['table1','table2']
mylist = [['val1','val2'], ['val3','val4'],['val5','val6'],['val7','val8'],['val9','val10']]
mylist_tup = zip(mylist, worker_tables)
我得到的结果是 -
print mylist_tup
[(['val1', 'val2'], 'table1'), (['val3', 'val4'], 'table2')]
如你所见,它没有加入第一个列表中的table1和table2字段..
期望的输出=
[(['val1', 'val2'], 'table1'),(['val3', 'val4'], 'table2'), (['val5', 'val6'], 'table1'),(['val7', 'val8'], 'table2'), (['val9', 'val10'], 'table1')]
答案 0 :(得分:5)
您可以使用itertools.cycle
来获得所需的结果:
from itertools import cycle
mylist_tup = zip(mylist, cycle(worker_tables))
这将根据需要循环遍历worker_tables
的值。
答案 1 :(得分:2)
您可以将worker_table列表项重复到mylist的长度:
worker_tables=['table1','table2']
mylist = [['val1','val2'], ['val3','val4'],['val5','val6'],['val7','val8'],['val9','val10']]
mylist_tup = zip(mylist, worker_tables * int(len(mylist) / len(worker_tables)))