【发布时间】:2021-11-18 00:32:31
【问题描述】:
我有一个物品清单。在 for 循环中,我检查项目是否为 3。如果是 3,则应将 3 更改为 2。这是我想到使用 for 循环的两种方式。但只有最后一个有效。
有没有一种方法可以让第一个 for 循环工作而不会失去其“pythonic”风格?
a = [1, 2, 3]
for num in a:
if num == 3:
num = 2
# -> [1, 2, 3]
for i in range(len(a)):
if a[i] == 3:
a[i] = 2
# -> [1, 2, 2]
【问题讨论】:
-
pythonic 的解决方案不是就地修改列表,而是使用更新的值创建列表的新副本。
-
您必须做出基本的设计决策。您要就地修改列表还是创建副本?
-
你的第二个 sn-p 绝对是一个合理的,如果不是完美的解决方案。
标签: python list loops for-loop variable-assignment