1. ホーム
  2. python

[解決済み] Pythonで "反転 "リストを作成する最良の方法とは?

2023-01-05 23:51:36

質問

Pythonで、項目が他のリストと同じであるが逆順の新しいリストを作成する最良の方法は何でしょうか?(私は既存のリストをその場で変更したくありません)。

ここに、私に思いついた1つの解決策があります。

new_list = list(reversed(old_list))

を重複させることも可能です。 old_list というように複製して、その場で反転させることも可能です。

new_list = list(old_list) # or `new_list = old_list[:]`
new_list.reverse()

私が見落としている、より良い選択肢はありますか?そうでない場合、上記のアプローチのいずれかを他よりも使用する説得力のある理由 (効率性など) がありますか?

どのように解決するのですか?

newlist = oldlist[::-1]

[::-1] スライス(妻のAnnaはこれを "火星人のスマイリーと呼んでいます)は、シーケンス全体を -1 のステップで、つまり逆方向でスライスすることを意味します。 これはすべてのシーケンスで機能します。

なお、この ( は浅いコピーと同じです。つまり、アイテムが変異可能で、それに対してミューテータを呼び出すと、元のリストにあるアイテムの変異は反転したリストのアイテムにもあり、その逆もまた然りです。 もし、それを避ける必要があるならば copy.deepcopy (常にコストのかかる操作になる可能性がありますが)、この場合、その後に .reverse が唯一の良い選択肢です。