如何从两个列表创建元组,以便重复一个列表元素

时间:2017-12-06 06:13:43

标签: python list tuples

我正在尝试加入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')]

2 个答案:

答案 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)))