686

list.append()リストの最後に追加するための明らかな選択です。欠落しているの合理的な説明list.prepend()を次に示します。私のリストが短く、パフォーマンスの問題が無視できると仮定すると、

list.insert(0, x)

また

list[0:0] = [x]

慣用的な?

4

6 に答える 6

965

s.insert(0, x)フォームが最も一般的です。

ただし、それを見るときはいつでも、リストの代わりにcollections.dequeを使用することを検討する時期かもしれません。dequeの前に置くことは、一定時間で実行されます。リストの前に付けることは線形時間で実行されます。

于 2011-12-16T18:08:26.647 に答える
342

機能的な方法で進むことができれば、次のことはかなり明確です

new_list = [x] + your_list

もちろん、 に挿入xしたyour_listのではなく、先頭に追加して新しいリストを作成xしました。

于 2012-06-05T06:25:16.383 に答える
57

誰かが私のようにこの質問を見つけた場合、提案された方法のパフォーマンステストは次のとおりです。

Python 2.7.8

In [1]: %timeit ([1]*1000000).insert(0, 0)
100 loops, best of 3: 4.62 ms per loop

In [2]: %timeit ([1]*1000000)[0:0] = [0]
100 loops, best of 3: 4.55 ms per loop

In [3]: %timeit [0] + [1]*1000000
100 loops, best of 3: 8.04 ms per loop

ご覧のとおり、insertおよびスライスの割り当ては、明示的な追加よりもほぼ 2 倍高速であり、結果も非常に似ています。Raymond Hettingerが指摘したようinsertに、より一般的なオプションであり、個人的にはこの方法をリストの先頭に追加することを好みます。

于 2015-03-03T09:25:56.630 に答える