从bc到bc的python列表转换

从bc到bc的python列表转换,python,Python,我想将列表[“a”、“B”、“C”]转换为新列表[“a”、“a”、“B”、“B”、“C”、“C”]。我可以想出一个丑陋的循环方法,但是有没有一行呢?我会用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,

我想将列表[“a”、“B”、“C”]转换为新列表[“a”、“a”、“B”、“B”、“C”、“C”]。我可以想出一个丑陋的循环方法,但是有没有一行呢?

我会用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]
['A', 'A', 'B', 'B', 'C', 'C']

用itertools进行列表连接怎么样

import itertools
a = ["A", "B", "C"]
c = list(itertools.chain(*[ 2*x for x in a] ))
print(c)
输出

[0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9]
['A', 'A', 'B', 'B', 'C', 'C']
始终可以用变量替换
2

  • 您可以将
    itertools.chain
    与zip一起使用,以获得所需的结果
来自itertools导入链的

l=[1,2,3]
列表(链从(zip(l,l)))
输出:

[1,1,2,2,3,3]

如果您已经在做两个循环,则不需要
itertools。重复
,只需使用
[i for i in original\u input for u in range(n)]