Python-创建重复N次的单个项目的列表

发布于 2021-02-02 23:19:18

我想创建一系列长度不一的列表。每个列表将包含相同的元素e,重复n次数(其中n=列表的长度)。

如何创建列表,而不[e for number in xrange(n)]对每个列表使用列表理解?

关注者
0
被浏览
65
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    你还可以编写:

    [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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看