Create list of single item repeated N times

前端 未结 6 1127
南笙
南笙 2020-11-22 03:57

I want to create a series of lists, all of varying lengths. Each list will contain the same element e, repeated n times (where n = len

6条回答
  •  旧时难觅i
    2020-11-22 04:30

    You can also write:

    [e] * n
    

    You should note that if e is for example an empty list you get a list with n references to the same list, not n independent empty lists.

    Performance testing

    At first glance it seems that repeat is the fastest way to create a list with n identical elements:

    >>> timeit.timeit('itertools.repeat(0, 10)', 'import itertools', number = 1000000)
    0.37095273281943264
    >>> timeit.timeit('[0] * 10', 'import itertools', number = 1000000)
    0.5577236771712819
    

    But wait - it's not a fair test...

    >>> itertools.repeat(0, 10)
    repeat(0, 10)  # Not a list!!!
    

    The function itertools.repeat doesn't actually create the list, it just creates an object that can be used to create a list if you wish! Let's try that again, but converting to a list:

    >>> timeit.timeit('list(itertools.repeat(0, 10))', 'import itertools', number = 1000000)
    1.7508119747063233
    

    So if you want a list, use [e] * n. If you want to generate the elements lazily, use repeat.

提交回复
热议问题