首页 > 解决方案 > 如何更改列表值?

问题描述

def double_reverse(words_list):
    reverse = []
    reverse1= []
    reverse = words_list[::-1] 
    
    for i in reverse:
        reverse1.append(i[::-1])
    words_list = reverse1

你好呀,

我有一个练习评估的问题:

问题

对于这个问题,我无法返回或打印任何内容。相反,我需要更新 words_list 列表值,以便获得所需的结果。

但是,由于某种原因,我只能得到原始列表。为什么列表没有更新?

干杯

标签: python

解决方案


words_list = reverse1

只是重新绑定局部变量words_list。它不会改变该变量之前引用的对象(作为函数参数传入的对象)。一个简单的解决方法是切片分配:

words_list[:] = reverse1

这构成了对所述对象的突变。

您的函数的一般 pythonic 简化可能是:

def double_reverse(words_list):
    words_list[:] = [w[::-1] for w in reversed(words_list)]

推荐阅读