Python - 以有序的方式复制元组

时间:2018-01-16 16:01:22

标签: python duplicates

我想找到一种方法在列表中复制元组,但是有条不紊。含义:

假设:

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)]

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)