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

时间:2019-09-03 00:20:40

标签: python

此代码生成一个包含9个列表的列表。

>>> [1 for i in range(9)]
[1, 1, 1, 1, 1, 1, 1, 1, 1]

是否有更快的方法?

2 个答案:

答案 0 :(得分:1)

使用列表乘法的更快(based on this post)和更短的时间:

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

答案 1 :(得分:0)

您可以创建一个对象,该对象具有无限(或定义为一组)的任何元素,而这与所需元素的数量无关。

因此,虽然9个列表不一定比创建列表“更快”,但肯定要快数百个,而1000万或10亿个列表显然要更快:

class Ones:
    def __init__(self, element=1, size=9):
         self.element = element
         self.size = size
    def __getitem__(self, index):
         return self.element
    def __len__(self):
         return self.size

此外,如果您只需要对重复的元素进行迭代,则可以使用itertools.repeat

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