6.2. Optimization Definition

6.2.1. Define Empty

  • You can define empty list in two ways: data = [] or data = list()

  • data = [] is faster

Empty list:

>>> data = []
>>> data = list()

Performance:

>>> %%timeit -n 1000 -r 1000  # doctest: +SKIP
...
... data = []
...
11.2 ns ± 4.62 ns per loop (mean ± std. dev. of 1000 runs, 1,000 loops each)
10.2 ns ± 2.88 ns per loop (mean ± std. dev. of 1000 runs, 1,000 loops each)
10.6 ns ± 3.48 ns per loop (mean ± std. dev. of 1000 runs, 1,000 loops each)
10.5 ns ± 4.59 ns per loop (mean ± std. dev. of 1000 runs, 1,000 loops each)
10.4 ns ± 3.59 ns per loop (mean ± std. dev. of 1000 runs, 1,000 loops each)
>>> %%timeit -n 1000 -r 1000  # doctest: +SKIP
...
... data = list()
...
25.1 ns ± 7.23 ns per loop (mean ± std. dev. of 1000 runs, 1,000 loops each)
27.9 ns ± 11.9 ns per loop (mean ± std. dev. of 1000 runs, 1,000 loops each)
26.6 ns ± 16.8 ns per loop (mean ± std. dev. of 1000 runs, 1,000 loops each)
29.7 ns ± 13.3 ns per loop (mean ± std. dev. of 1000 runs, 1,000 loops each)
29.4 ns ± 13.7 ns per loop (mean ± std. dev. of 1000 runs, 1,000 loops each)
  • Date: 2026-05-29

  • Python: 3.14.5

  • IPython: 9.13.0

  • System: macOS 26.5

  • Computer: MacBook M3 Max

  • CPU: 16 cores (12 performance and 4 efficiency) / 3nm

  • RAM: 128 GB RAM LPDDR5

6.2.2. Rationale

>>> from dis import dis
>>> dis('a = []')
  0           RESUME                   0

  1           BUILD_LIST               0
              STORE_NAME               0 (a)
              LOAD_CONST               0 (None)
              RETURN_VALUE
>>> dis('a = list()')
  0           RESUME                   0

  1           LOAD_NAME                0 (list)
              PUSH_NULL
              CALL                     0
              STORE_NAME               1 (a)
              LOAD_CONST               0 (None)
              RETURN_VALUE