在python中模拟反向属性的函数有问题

时间:2014-12-17 08:35:15

标签: python list function reverse

我有这个函数在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本身。我怎样才能解决我的问题?

2 个答案:

答案 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