我想找到一种方法在列表中复制元组,但是有条不紊。含义:
假设:
a = [('c','v','t'),(1,2,3)]
并且假设有三个副本,我正在寻找一种方法来获得这个:
a = [('c','v','t'),('c','v','t'),('c','v','t'),(1,2,3),(1,2,3),(1,2,3)]
到目前为止,我使用列表理解
[item*3 for item in a]
然而,它打破了元组:
out = [('c', 'v', 't', 'c', 'v', 't', 'c', 'v', 't'), (1, 2, 3, 1, 2, 3, 1, 2, 3)]
答案 0 :(得分:4)
这应该有效:
[y for y in a for i in range(3)]
使用两个循环可以防止出现问题
答案 1 :(得分:1)
itertools.repeat
是你的朋友。
import itertools as it
a = [("c", "v", "t"), (1, 2, 3)]
list(it.chain(*zip(*it.repeat(a, 3))))
# [('c', 'v', 't'), ('c', 'v', 't'), ('c', 'v', 't'), (1, 2, 3), (1, 2, 3), (1, 2, 3)]
答案 2 :(得分:0)
您可以使用列表理解:
dup_num = 3
list1 = [('c', 'v', 't'), (1, 2, 3)]
list2 = [tup2 for tup in list1 for tup2 in [tup] * 3]
但我不是那么喜欢。
您还可以使用for循环:
list2 = []
for tup in list1:
list2.extend([tup] * 3)