MsFedkin
MsFedkin

Reputation: 13

Python function with list

learn python by myself. I made a function for filling list. But I have 2 variants, and I want to discover which one is better and why. Or they both awful anyway I want to know truth.

def foo (x):
    l = [0] * x
    for i in range(x):
        l[i] = i
    return l

def foo1 (x):
    l = []
    for i in range(x):
        l.append(i)
    return l

Upvotes: 0

Views: 70

Answers (1)

kederrac
kederrac

Reputation: 17322

from a performance perspective the first version foo is better:

%timeit foo(1000000)
# 52.4 ms ± 1.99 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
%timeit foo1(1000000)
# 67.2 ms ± 916 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

but the pythonic way to unpack an iterator in a list will be:

list(range(x))

also is faster:

%timeit list(range(1000000))
# 26.7 ms ± 661 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

Upvotes: 1

Related Questions