python如何用for循环修改一个list中元素的值

l = ['1', '2', '1', '1']
for i in l:
    if i == '1':
        i = '3'
print(l)

为什么l的结果还是['1', '2', '1', '1'],如何修改成['3', '2', '3', '3']?

阅读 4.7k
3 个回答

l = ['1', '2', '1', '1']
new_l = []
for i in l:

if i == '1':
    new_l.append(3)
else:
    new_l.append(i)

l = new_l
print(l)

# 方法一
for i in range(len(l)):
     if l[i] == '1':
          l[i] = '3'


# 方法二
for i, item in enumerate(l):
    if item == '1':
          l[i] = '3'

另外,如果要删除元素,建议不要直接在原数据上做修改,比较谨慎的做法是复制一份出来list.remove(value) 删除。

# 修改原列表
for idx, i in enumerate(l):
    if i == '1':
        l[idx] = '3'
# 或产生新的列表
l = ['3' if i=='1' else i for i in l]        
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题