Python中是否可以修改使用append方法插入列表的元素?
解决方案
原有代码问题修正
append是列表内置方法,调用时需使用圆括号()而非方括号[],且append每次仅支持传入1个插入元素,插入嵌套列表的正确写法如下:
# 不要用list作为变量名,会覆盖Python内置的列表类型 my_list = [] my_list.append([myuserid, 'true'])
- 原有遍历修改逻辑不生效的原因:遍历列表时拿到的
data是临时变量,直接给data赋值只会改变该变量的指向,不会修改原列表中存储的内容。你遇到的新旧元素同时存在的问题,是之前测试时重复执行append操作导致的,该遍历逻辑本身不会新增元素。
可行修改方案
方案1:按索引遍历修改原列表
通过enumerate同时拿到元素索引和值,匹配到目标后直接修改对应索引位置的内容,直接修改原列表:
for index, data in enumerate(my_list): if data == [myuserid, 'true']: my_list[index] = [myuserid, 'false']
方案2:直接修改子列表内部元素
如果子列表固定为[用户id, 状态字符串]的结构,可以直接修改子列表的内部属性,不需要操作索引:
for data in my_list: if data[0] == myuserid and data[1] == 'true': # 子列表是可变对象,修改内部元素会直接同步到原列表 data[1] = 'false'
方案3:列表推导式生成新列表
不需要修改原列表,直接通过推导式生成符合要求的新列表覆盖原有变量:
my_list = [[myuserid, 'false'] if item == [myuserid, 'true'] else item for item in my_list]
内容的提问来源于stack exchange,提问作者Thorngard
相关产品推荐
相关产品推荐

