python中的零列表[重复]

2020/10/31 15:51 · python ·  · 0评论

如何创建list仅包含零的a?我希望能够创造一个零list为每个intrange(10)

例如,如果int范围是,4我将得到:

[0,0,0,0]

和为7

[0,0,0,0,0,0,0]

#add code here to figure out the number of 0's you need, naming the variable n.
listofzeros = [0] * n

如果您希望将其放入函数中,只需放入该代码并添加 return listofzeros

看起来像这样:

def zerolistmaker(n):
    listofzeros = [0] * n
    return listofzeros

样本输出:

>>> 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]
>>> 
$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

您应该使用[0] * n生成带有n的列表

看看为什么[]比list()快

有一个疑难杂症虽然两者itertools.repeat[0] * n会创建列表,其元素是指相同的id对于诸如整数或字符串之类的不可变对象而言,这不是问题,但是如果您尝试创建诸如列表([[]] * n列表之类的可变对象列表,则所有元素都将引用同一对象。

a = [[]] * 10
a[0].append(1)
a
> [[1], [1], [1], [1], [1], [1], [1], [1], [1], [1]]

[0] * n将立即创建列表,而repeat第一次访问时可用于延迟创建列表。

如果您要处理大量数据,而您的问题不需要可变长度的列表或列表中的多种数据类型,则最好使用numpy数组。

timeit('numpy.zeros(100000, numpy.int)', 'import numpy', number=1000)
> 0.057849884033203125

numpy 阵列也会消耗更少的内存。

创建所有值都相同的列表的最简单方法是将一个元素列表乘以n

>>> [0] * 4
[0, 0, 0, 0]

因此,对于您的循环:

for i in range(10):
    print [0] * i
$ python3
>>> from itertools import repeat
>>> list(repeat(0, 7))
[0, 0, 0, 0, 0, 0, 0]
zlists = [[0] * i for i in range(10)]

zlists[0]是0个零zlists[1]的列表,zlists[2]1个零的列表是2个零的列表,依此类推。

zeros=[0]*4

您可以将4上面的示例替换为所需的任何数字。

如果您想要一个将在列表中返回任意数量的零的函数,请尝试以下操作:

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的方式:

list(0 for i in xrange(0,5)) 
本文地址:http://python.askforanswer.com/pythonzhongdelingliebiaozhongfu.html
文章标签:
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!