Dlaczego płytkie kopiowanie listy przy użyciu plasterka jest o wiele szybsze niż przy użyciu wbudowanego list
?Dlaczego kopiowanie listy za pomocą plasterka [:] jest szybsze niż w oczywisty sposób?
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
Zwykle, gdy widzę dziwne rzeczy, jak to, są one ustalane python3 - ale ta rozbieżność jest nadal istnieje:
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
związane http://stackoverflow.com/questions/12537716/why-is-slice-assignment-faster-than-list-insert?rq=1 – njzk2
jedno wyjaśnienie, że 'list' to funkcja musisz zadzwonić. – njzk2
również lista musi robić rzeczy z każdym elementem, gdzie plasterek właśnie kopiuje blok pamięci na nowy adres ... –