如何在不修改 Python 中的原始列表的情况下反转列表

Han*_*ana 5 python python-3.x

我正在尝试通过以下方式使用 reverse() 方法:

>>> L=[1,2,3]
>>> R=L
>>> L.reverse()
>>> L
[3, 2, 1]
>>> R
[3, 2, 1]
Run Code Online (Sandbox Code Playgroud)

为什么它也会反转 R?如何保留原始列表并创建反向列表?

谢谢!

hir*_*ist 7

您需要复印一份清单

L=[1,2,3]
# R=L
R = L[:]
L.reverse()
Run Code Online (Sandbox Code Playgroud)

或者更直接(使用切片符号反转):

R = L[::-1]
Run Code Online (Sandbox Code Playgroud)

如果你只是写R = L那么R只是同一列表上的新参考L

如果您还需要复制列表中的元素,请使用copy.deepcopy; R = L[:]只产生一个浅拷贝(在列表中只有ints 的情况下这很好)。

  • 请注意,最简单的解决方案是将浅拷贝切片与反转结合起来,得到规范的反转切片:`R = L[::-1]` (3认同)