此代码生成一个包含9个列表的列表。
>>> [1 for i in range(9)]
[1, 1, 1, 1, 1, 1, 1, 1, 1]
是否有更快的方法?
答案 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)