【发布时间】:2020-07-15 03:13:13
【问题描述】:
我想将列表 ["A", "B", "C"] 转换为新列表 ["A", "A", "B", "B", "C", " C”]。我可以想到一种丑陋的循环方式,但是有一个单行吗?
【问题讨论】:
标签: python
我想将列表 ["A", "B", "C"] 转换为新列表 ["A", "A", "B", "B", "C", " C”]。我可以想到一种丑陋的循环方式,但是有一个单行吗?
【问题讨论】:
标签: python
如何使用 itertools 进行列表连接?
import itertools
a = ["A", "B", "C"]
c = list(itertools.chain(*[ 2*x for x in a] ))
print(c)
输出
['A', 'A', 'B', 'B', 'C', 'C']
您始终可以将2 替换为变量。
【讨论】:
itertools.chain 和 zip 来获得所需的结果。from itertools import chain
l = [1,2,3]
list(chain.from_iterable(zip(l,l)))
输出:
[1,1,2,2,3,3]
【讨论】:
我会使用 itertools.repeat
import itertools
n= 2
print([repetition for i in range(10)
for repetition in itertools.repeat(i,n) ])
输出
[0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9]
【讨论】:
itertools.repeat,只需使用[i for i in original_input for _ in range(n)]