我想写一个复活列表的函数,[1,5,3,6,...]
并[1,1,5,5,3,3,6,6,...]
想知道如何做到这一点?谢谢
Dav*_*rby 53
>>> a = range(10)
>>> [val for val in a for _ in (0, 1)]
[0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9]
Run Code Online (Sandbox Code Playgroud)
NB _传统上用作占位符变量名称,您不希望对变量的内容执行任何操作.在这种情况下,它仅用于为外循环每次生成两个值.
要将其从列表转换为生成器,请使用圆括号替换方括号.
Sil*_*ost 13
>>> a = [1, 2, 3]
>>> b = []
>>> for i in a:
b.extend([i, i])
>>> b
[1, 1, 2, 2, 3, 3]
Run Code Online (Sandbox Code Playgroud)
要么
>>> [a[i//2] for i in range(len(a)*2)]
[1, 1, 2, 2, 3, 3]
Run Code Online (Sandbox Code Playgroud)
如果您已经有roundrobin文档中描述的配方itertools- 并且它非常方便 - 那么您可以使用
roundrobin(my_list, my_list)
Run Code Online (Sandbox Code Playgroud)
我会用zip和itertools.chain.
>>> import itertools
>>> l = [1,5,3,6,16]
>>> list(itertools.chain(*zip(l,l)))
[1, 1, 5, 5, 3, 3, 6, 6, 16, 16]
Run Code Online (Sandbox Code Playgroud)
注意:我以前只使用list发生器使其适合打印.您可能不需要list代码中的调用...
可以使用列表乘法。如果您需要将每个列表成员放在一起,只需使用排序方法即可。
>>> lst = [1,2,3,4]
>>> sorted(lst*2)
[1,1,2,2,3,3,4,4]
Run Code Online (Sandbox Code Playgroud)
numpy.repeat 做你想要的:
import numpy as np
yourList = [1,5,3,6]
n = 2
list(np.repeat(yourList, n))
Run Code Online (Sandbox Code Playgroud)
结果:
[1, 1, 5, 5, 3, 3, 6, 6]
Run Code Online (Sandbox Code Playgroud)
如果您不介意使用numpy数组,也可以list()在最后一行省略该调用。
用一点切片...
>>> a = [3, 1, 4, 1, 5]
>>> a[:0] = a[::2] = a[1::2] = a[:]
>>> a
[3, 3, 1, 1, 4, 4, 1, 1, 5, 5]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20241 次 |
| 最近记录: |