Почему [Нет] * 10 быстрее, чем [Нет для i в диапазоне (10)] - PullRequest
2 голосов
/ 20 октября 2019

Я хотел создать список с некоторыми инициализированными значениями, потому что пустой список не вариант в Python. Поэтому я начал думать, что будет быстрее: l = [None for i in range(1000)] или l = [None] * 1000 И я попытался проверить его с помощью timeit:

In [56]: timeit.timeit('l = [None] * 1000', number=10000)
Out[56]: 0.04936316597741097
In [58]: timeit.timeit('l = [None for i in range(1000)]', number=10000)
Out[58]: 0.2318978540133685

Я был удивлен, что [None] * 1000 быстрее.

  1. Почему это так (и мой метод проверки производительности правильный)?
  2. Есть ли более быстрый способ инициализации "пустого" списка?
...