有没有更快的方法生成相同元素的Python列表?

有没有更快的方法生成相同元素的Python列表?,python,Python,此代码生成一个由9个元素组成的列表 >>> [1 for i in range(9)] [1, 1, 1, 1, 1, 1, 1, 1, 1] 有没有更快的方法来实现这一点?更快的()和更短的方法是使用列表乘法: >>> [1] * 9 [1, 1, 1, 1, 1, 1, 1, 1, 1] 您只需创建一个对象,该对象具有无限多个元素,或者定义了一组元素,而这并不取决于所需元素的数量 因此,虽然9个用户创建列表的速度不一定比创建列表的速度快,但数百个用户创

此代码生成一个由9个元素组成的列表

>>> [1 for i in range(9)]
[1, 1, 1, 1, 1, 1, 1, 1, 1]
有没有更快的方法来实现这一点?

更快的()和更短的方法是使用列表乘法:

>>> [1] * 9
[1, 1, 1, 1, 1, 1, 1, 1, 1]

您只需创建一个对象,该对象具有无限多个元素,或者定义了一组元素,而这并不取决于所需元素的数量

因此,虽然9个用户创建列表的速度不一定比创建列表的速度快,但数百个用户创建列表的速度肯定会更快,1000万或10亿用户创建列表的速度明显更快:

一级:
定义初始化(self,元素=1,大小=9):
self.element=元素
self.size=大小
定义uu获取项目uu(自身,索引):
返回自我元素
定义(自我):
返回自身大小
此外,如果您只需要在重复的元素上迭代一个元素,而不是在任何任意索引中都能得到一个,那么您可以使用
itertools.repeat

import itertools
ones = itertools.repeat(1, size=9)

这是一个巧妙的方法!不过要小心。对于一个不可变的元素,比如一个数字,这是可以的,但是如果元素是可变的,那么改变一个元素就会改变所有元素。因此,这方面的bug是经常出现的。
np.ones(9)
…?您认为这需要多快?问题是关于列表,而不是任何迭代器。事实上。但我想,如果一个人需要重复的元素,即使他脑子里有“列表”这个词,这个答案也会更有用。所以,它可能不是“正确的”,但对这个案例肯定有帮助。同意。不过,我想不出任何需要这种方法的用例。我假设在初始化列表后,人们希望能够对元素进行变异。这就是为什么会出现“itertools.repeat”的原因——这很少见,但在某些情况下,人们可能需要它。我们所需要的是代码中的另一个地方,它需要一个序列,并且您希望在那里传递一个相同的元素序列,以便使用它。这种方法同样适用于那些想要改变元素以保持“稀疏序列”的人,因为大多数元素都是相同的,但是那些改变了的元素和相关的dict以及上面5或6行额外的代码可以做到这一点。