Warum ist das Flachkopieren einer Liste mit einem Schnitt so viel schneller als die Verwendung von list
?Warum wird eine Liste mit einem Schnitt [:] schneller kopiert als mit der offensichtlichen Methode?
In [1]: x = range(10)
In [2]: timeit x_ = x[:]
10000000 loops, best of 3: 83.2 ns per loop
In [3]: timeit x_ = list(x)
10000000 loops, best of 3: 147 ns per loop
Normalerweise, wenn ich seltsame Dinge wie diese sehen, sind sie in python3 fixiert - aber diese Diskrepanz ist immer noch da:
In [1]: x = list(range(10))
In [2]: timeit x_ = x[:]
10000000 loops, best of 3: 100 ns per loop
In [3]: timeit x_ = list(x)
10000000 loops, best of 3: 178 ns per loop
bezogen auf http://stackoverflow.com/questions/12537716/why-is-slice-assignment-faster-than-list-insert?rq=1 – njzk2
Eine Erklärung dafür ist, dass 'list' eine Funktion ist, dass Sie müssen anrufen. – njzk2
Liste muss auch Sachen mit jedem Gegenstand machen, wo ein Schnitt nur einen Speicherblock an eine neue Adresse kopiert ... –