List of zeros in python
本问题已经有最佳答案,请猛点这里访问。
如何创建一个只包含零的
例如,如果范围内的
1 | [0,0,0,0] |
对于
1 | [0,0,0,0,0,0,0] |
1 2 | #add code here to figure out the number of 0's you need, naming the variable n. listofzeros = [0] * n |
如果您愿意将它放入函数中,只需放入该代码并添加
看起来像这样:
1 2 3 | def zerolistmaker(n): listofzeros = [0] * n return listofzeros |
样品输出:
1 2 3 4 5 6 7 | >>> 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] >>> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $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 |
您应该使用
查看为什么[]比list()快
不过,有一个gotcha,
1 2 3 4 | a = [[]] * 10 a[0].append(1) a > [[1], [1], [1], [1], [1], [1], [1], [1], [1], [1]] |
如果您处理的数据量非常大,并且您的问题不需要可变长度的列表或列表中的多个数据类型,那么最好使用
1 2 | timeit('numpy.zeros(100000, numpy.int)', 'import numpy', number=1000) > 0.057849884033203125 |
创建所有值都相同的列表的最简单方法是将一个元素列表乘以
1 2 | >>> [0] * 4 [0, 0, 0, 0] |
所以对于你的循环:
1 2 | for i in range(10): print [0] * i |
1 2 3 4 | $ python3 >>> from itertools import repeat >>> list(repeat(0, 7)) [0, 0, 0, 0, 0, 0, 0] |
1 | zlists = [[0] * i for i in range(10)] |
在上面的例子中,您可以用您想要的任何数字替换
如果希望函数在列表中返回任意数量的零,请尝试以下操作:
1 2 3 4 5 6 | def make_zeros(number): return [0] * number list = make_zeros(10) # list now contains: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] |
这是xrange方法:
1 | list(0 for i in xrange(0,5)) |