我有这个函数在python中模拟reverse()
:
My_list = [[1, 3, "s"], 2, 2, 3, 4, 2]
def listRev(list):
list=list[::-1]
print list
listRev(My_list)
print My_list
该函数为我提供了正确的反转list
,但我希望当我在最后一行打印My_list
时,代码打印反转My_list
而不是My_list
本身。我怎样才能解决我的问题?
答案 0 :(得分:3)
如果要模拟反向,则必须修改作为参数传递给您的函数,而不是简单地在函数中使用新列表。
当您编写list=list[::-1]
原始参数的本地副本指向新列表时。你应该这样做:
def rev(l):
l[:] = l[::-1]
print (l)
使用l[:]
要求Python替换列表的内容,而不是让变量指向新列表。
答案 1 :(得分:2)
这可以通过从函数
返回一个列表来解决My_list = [[1, 3, "s"], 2, 2, 3, 4, 2]
def listRev(list):
list=list[::-1]
print list
return list
My_list = listRev(My_list)
print My_list
这是因为列表不是通过Python引用传递的。
发表评论编辑
如果您希望该功能仅适用于My_list
,即使它非常错误且编程错误,您也可以使用此
My_list = [[1, 3, "s"], 2, 2, 3, 4, 2]
def listRev():
global My_list
My_list = My_list[::-1]
listRev()
print My_list