我有一个很大的序列相关问题要解决以下是子问题,我确信它在python中是非常基本的,我不知道.
seq = [4*x for x in range (1,(20/4))]
generates seq = [4, 8, 12, 16]
Run Code Online (Sandbox Code Playgroud)
我该怎么生成
[4, 4, 8, 8, 12, 12, 16]
seq = [4*x, 4*x for x in range (1,(20/4))] does not work
Run Code Online (Sandbox Code Playgroud)
我可以通过编写一个小函数轻松解决上述问题,但我在变量定义时需要它.
您的解决方案不起作用,因为它生成一个元组列表.
您正在寻找的是一种平整您生成的列表的方法 - 最简单的方法是itertools.chain.from_iterable():
>>> list(itertools.chain.from_iterable([4*x]*2 for x in range(1, 5)))
[4, 4, 8, 8, 12, 12, 16, 16]
Run Code Online (Sandbox Code Playgroud)
如果您打算只使用一次最后一个值,就像在您的示例中一样,只需切片列表的末尾(seq[:-1]).
作为注释,您可以使用列表并将其相乘(假设值是不可变的,或者您不介意它们是同一个对象),而不是重复您想要的每个重复的值.另一种选择是itertools.repeat().
| 归档时间: |
|
| 查看次数: |
422 次 |
| 最近记录: |