【发布时间】:2020-07-06 19:09:56
【问题描述】:
我使用的是 python 3.7,我需要使用相同的操作集修改多个列表 - 去重和排序。
我编写了以下代码,并且可以验证列表是否已更新(使用 for 循环中的打印语句),但更新在循环之外丢失(最后一个打印语句)。
这是我的代码:
for lst in list1, list2, list3, list4, list5:
print(len(lst)) # shows the original count before dedup
lst = list(set(lst))
lst.sort()
print(len(lst)) # shows the right count after dedup
print(list1) # shows the original list before dedup
我猜 for 循环会更新列表的副本,而不是原始列表。我可以在没有 for 循环的情况下对单个列表运行 set 和 sort,但检查是否有更简洁的方法来使用循环更新数十个列表。
【问题讨论】:
-
在循环中修改原始数组总是一个坏主意。地图 fns 可能是一个不错的选择。
-
请提供minimal reproducible example,以及当前和预期的输出。
-
很好的工作创造了一个深思熟虑的问题。一段时间后您会习惯于命名绑定规则,但对于初学者来说会感到困惑。很好地发布了一个 MCVE,它不仅说明了问题,而且表明您已经做出了真正的尝试来跟踪问题并自行调试。欢迎来到 SO!
-
顺便说一句,如果你有几十个列表,可以考虑将它们保存在一个列表或字典中。
标签: python python-3.x list for-loop