Python列表反转函数混乱

Python列表反转函数混乱,python,Python,有人能解释一下为什么清单没有倒过来吗?在下一个例子中,它是相反的,但为什么呢?我真的无法理解这种行为 def f(x): x = x[::-1] list = [1,2,3] f(list) print(list) OUTPUT: [1,2,3] 正如juanpa.arrivillaga所说 因为x=x[:-1]不会在适当的位置改变列表。它创建一个新列表并将其分配给局部变量x。当函数终止时,该列表将被丢弃。另一方面,x[:]=任何改变列表的东西。实际上,x[:]=x[::-1]实际上

有人能解释一下为什么清单没有倒过来吗?在下一个例子中,它是相反的,但为什么呢?我真的无法理解这种行为

def f(x):
    x = x[::-1]
list = [1,2,3]
f(list)
print(list)

OUTPUT: [1,2,3]

正如juanpa.arrivillaga所说


因为
x=x[:-1]
不会在适当的位置改变列表。它创建一个新列表并将其分配给局部变量
x
。当函数终止时,该列表将被丢弃。另一方面,
x[:]=任何改变列表的东西。实际上,
x[:]=x[::-1]
实际上创建了一个新的列表,并且该新列表用于修改原始列表

您可以使用内置的n方法
.reverse()
来反转列表

def f(x):
    x[:] = x[::-1]
list = [1,2,3]
f(list)
print(list)

OUTPUT: [3,2,1]
或者您可以使用反向:

mylist = [1,2,3]
mylist.reverse()
print(mylist)

并尽量避免在变量名中使用内置函数名
list

,因为
x=x[::-1]
不会对列表进行适当的修改。它创建一个新列表并将其分配给局部变量
x
。当函数终止时,该列表将被丢弃。另一方面,
x[:]=任何改变列表的东西。实际上,
x[:]=x[::-1]
实际上创建了一个新的列表,并且该新列表用于修改原始列表。在任何情况下,您都应该阅读,您应该简单地使用内置方法
.reverse()
在适当的位置反转列表非常好的解释@juanpa.arrivillaga!我很困惑,因为x[:]创建了一个新的列表,但是这个新列表是如何用来改变原始列表的呢@胡安帕。arrivillaga@user737163因为
x[:]=whavever
改变了一个列表,所以它是片分配。它本质上是对
x的调用。uuuu setitem_uuuuuu(slice(None),无论什么)
“应该”可能不是正确的单词。您可以很好地使用
[::-1]
反向
深化用例。啊,对不起。更改为可以
list(reversed(mylist))
可能是
reversed(mylist)
:-PIm唯一不好的用例,因为x[:]创建了一个新列表,但是如何使用新列表来改变原始列表?
mylist = [1,2,3]
mylist = reversed(mylist)
print(list(mylist))