old = [1, 2, 3]
(もしあれば)次の2行の違いは何ですか?python list copy:古い[:]とリスト(古い)の違いはありますか?
new = old[:]
new = list(old)
更新は、私はすでにubershmekelの答えを受け入れていたが、後に、私は興味深い事実を学んだ:[:]
は小さなリスト(10個の要素)が、list()
のために高速であるより速く、より大きなリスト(100000の要素)のために。
~$ python -S -mtimeit -s "a = list(range(10))" "a[:]"
1000000 loops, best of 3: 0.198 usec per loop
~$ python -S -mtimeit -s "a = list(range(10))" "list(a)"
1000000 loops, best of 3: 0.453 usec per loop
~$ python -S -mtimeit -s "a = list(range(100000))" "a[:]"
1000 loops, best of 3: 675 usec per loop
~$ python -S -mtimeit -s "a = list(range(100000))" "list(a)"
1000 loops, best of 3: 664 usec per loop
なぜ[:]は少し速いのですか? –
@MattFenwick 'list(x)'は、グローバル変数 'list'を検索し、1つの引数を持つ関数を呼び出す必要があります。 'x [:]'はこれらのどちらもしないのでオーバーヘッドが少なくなります。それが長いリストであれば、その差はごくわずかです(そして短いリストでさえもおそらく重要ではありません)。 – Duncan
可読性は主観的であり、バックグラウンドによって異なります。そのブログや別の関連記事では、私は[:]表記を「暗黙の」表記と呼びました。よく... – joaquin