如何创建list
仅包含零的零件?我希望能够创造一个零list
为每个int
在range(10)
例如,如果int
在范围内4
我会得到:
[0,0,0,0]
Run Code Online (Sandbox Code Playgroud)
并为7
:
[0,0,0,0,0,0,0]
Run Code Online (Sandbox Code Playgroud)
Tif*_*any 404
#add code here to figure out the number of 0's you need, naming the variable n.
listofzeros = [0] * n
Run Code Online (Sandbox Code Playgroud)
如果你想把它放在函数中,只需输入该代码并添加即可 return listofzeros
看起来像这样:
def zerolistmaker(n):
listofzeros = [0] * n
return listofzeros
Run Code Online (Sandbox Code Playgroud)
样本输出:
>>> zerolistmaker(4)
[0, 0, 0, 0]
>>> zerolistmaker(5)
[0, 0, 0, 0, 0]
>>> zerolistmaker(15)
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>>
Run Code Online (Sandbox Code Playgroud)
Sep*_*älä 50
$python 2.7.8
from timeit import timeit
import numpy
timeit("list(0 for i in xrange(0, 100000))", number=1000)
> 8.173301935195923
timeit("[0 for i in xrange(0, 100000)]", number=1000)
> 4.881675958633423
timeit("[0] * 100000", number=1000)
> 0.6624710559844971
timeit('list(itertools.repeat(0, 100000))', 'import itertools', number=1000)
> 1.0820629596710205
Run Code Online (Sandbox Code Playgroud)
您应该使用[0] * n
生成带n
零的列表.
有一个疑难杂症虽然两者itertools.repeat
并[0] * n
会创建列表,其元素是指相同的id
.这对于整数或字符串等不可变对象来说不是问题,但如果您尝试创建可变对象列表(如列表列表([[]] * n
)),则所有元素都将引用同一对象.
a = [[]] * 10
a[0].append(1)
a
> [[1], [1], [1], [1], [1], [1], [1], [1], [1], [1]]
Run Code Online (Sandbox Code Playgroud)
[0] * n
将立即创建列表,同时repeat
可用于在首次访问时懒惰地创建列表.
如果您正在处理大量数据并且您的问题不需要列表中的可变长度列表或多个数据类型,则最好使用numpy
数组.
timeit('numpy.zeros(100000, numpy.int)', 'import numpy', number=1000)
> 0.057849884033203125
Run Code Online (Sandbox Code Playgroud)
numpy
数组也会消耗更少的内存.
And*_*ark 27
创建所有值相同的列表的最简单方法是将单元素列表乘以n
.
>>> [0] * 4
[0, 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)
所以你的循环:
for i in range(10):
print [0] * i
Run Code Online (Sandbox Code Playgroud)
kev*_*kev 11
$ python3
>>> from itertools import repeat
>>> list(repeat(0, 7))
[0, 0, 0, 0, 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)
zlists = [[0] * i for i in range(10)]
Run Code Online (Sandbox Code Playgroud)
zlists[0]
是0个零zlists[1]
的列表,zlists[2]
是1个零的列表,是2个零的列表,等等.
如果您想要一个将在列表中返回任意数量的零的函数,请尝试以下操作:
def make_zeros(number):
return [0] * number
list = make_zeros(10)
# list now contains: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
381704 次 |
最近记录: |