你还可以编写:
[e] * n
你应该注意,例如,如果e是一个空列表,你将得到一个具有n个指向同一列表的引用的列表,而不是
n个独立的空列表。
性能测试
乍看之下,似乎是重复是创建一个具有
n个相同的元素列表的最快方法:
>>> timeit.timeit('itertools.repeat(0, 10)', 'import itertools', number = 1000000)0.37095273281943264>>> timeit.timeit('[0] * 10', 'import itertools', number = 1000000)0.5577236771712819但是等等-这不是一个公平的测试…
>>> itertools.repeat(0, 10)repeat(0, 10) # Not a list!!!
该函数
itertools.repeat实际上并没有创建列表,它只是创建一个对象,你可以根据需要使用该对象来创建列表!让我们再试一次,但转换为列表:
>>> timeit.timeit('list(itertools.repeat(0, 10))', 'import itertools', number = 1000000)1.7508119747063233因此,如果你想要列表,请使用
[e] * n。如果要延迟生成元素,请使用
repeat。



