为什么在调用列表不修改的另一个函数时?

时间:2017-05-22 08:27:52

标签: python list python-3.x function

当我通过函数从函数调用它时,我尝试用字符串反转列表,并且它没有工作

self.tableView.contentInset = UIEdgeInsetsMake(0, 30, 0, 0);

但是当我只使用一个功能时,它的效果非常好。

>>>
change_list = lambda lst_chn: lst_chn[::-1]

def check(lst_chk):
    change_list(lst_chk)
    return lst_chk

print(check([1,2,3,4,5,6,7,8]))
print(check(['1','2','3','4','5','6','7','8']))
<<<
[1, 2, 3, 4, 5, 6, 7, 8]
['1', '2', '3', '4', '5', '6', '7', '8']

为什么?

1 个答案:

答案 0 :(得分:0)

在第一种情况下,您将转储结果并返回原始未修改的序列:

def check(lst_chk):
    change_list(lst_chk)  # reversed sequence is discarded
    return lst_chk

在第二种情况下,您返回相反的序列并print它。

[::-1] 没有在适当的位置操作,它会返回结果,lst_chk在调用change_list后完全相同。

您可以返回相反的顺序:

def check(lst_chk):
    return change_list(lst_chk)

与第二种情况类似的效果,或者,如果您始终使用list s,请使用就地操作的reverse

相关问题