python循环修改列表_关于python:如何在for循环中修改列表项?

在Python中,直接在for循环中修改列表是不推荐的,但某些情况下可以安全操作。例如,通过索引修改列表元素,如`a[i] = s.strip()`,或使用列表推导式如`a[:] = [s.strip() for s in a]`。然而,删除或增加元素会引发问题,因为这会改变列表长度。示例中展示了如何正确和错误地在循环中修改列表,并提供了替代方法,如使用`enumerate()`和列表推导式。
摘要由CSDN通过智能技术生成

现在,我知道在迭代循环中修改列表是不安全的。 但是,假设我有一个字符串列表,并且我想自己剥离字符串。 替换可变值是否算作修改?

字符串不是可变值。

@ user470379:列表的元素是否可变与在循环时是否安全修改列表所处的位置无关。

由于下面的循环仅修改已经看到的元素,因此可以接受:

a = ['a',' b', 'c ', ' d ']

for i, s in enumerate(a):

a[i] = s.strip()

print(a) # -> ['a', 'b', 'c', 'd']

不同于:

a[:] = [s.strip() for s in a]

尽管它确实需要更多的索引操作,但它不需要创建临时列表和分配临时列表来替换原始列表。

警告:尽管可以用这种方式修改条目,但是您不能在list中更改项目数,而不会冒遇到问题的机会。

这是我的意思的示例-从该点开始删除条目会使索引混乱:

b = ['a', ' b', 'c ', ' d ']

for i, s in enumerate(b):

if s.strip() != b[i]:  # leading or trailing whitespace?

del b[i]

print(b)  # -> ['a', 'c ']  # WRONG!

(结果是错误的

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值