我想在较长列表的第n个元素上将两个列表组合成一个元组列表。
示例:
list1 = ['I', 'am']
list2 = ['1', '2', '3', '4', '5', '6']
to:
list3 = [('I', 'am', '1', '2', '3'), ('I', 'am', '4', '5', '6')]
不幸的是,我不知道一种方法来遍历具有潜在大量值的列表,以达到结果的目的。
有人可以给我提示如何做吗?
答案 0 :(得分:4)
从itertools(here)复制并粘贴grouper
食谱,然后:
>>> tup = tuple(list1)
>>> [tup + group for group in grouper(list2, 3)]
[('I', 'am', '1', '2', '3'), ('I', 'am', '4', '5', '6')]
答案 1 :(得分:1)
您可以找到list1
的连接元素的长度,并在列表理解中使用列表切片:
list1 = ['I', 'am']
list2 = ['1', '2', '3', '4', '5', '6']
l = len(''.join(list1))
final_result = [(*list1, *list2[i:i+l]) for i in range(0, len(list2), l)]
输出:
[('I', 'am', '1', '2', '3'), ('I', 'am', '4', '5', '6')]
答案 2 :(得分:0)
list1 = ['I', 'am']
list2 = ['1', '2', '3', '4', '5', '6']
f = lambda l, n=3: [l[i:i+n] for i in range(0, len(l), n)]
list(map(lambda l: tuple(list1 + l), f(list2)))
# [('I', 'am', '1', '2', '3'), ('I', 'am', '4', '5', '6')]