首页 > 解决方案 > (Python) 就地修改几个列表

问题描述

我想从几个列表中删除重复项(就地)。已尝试以下但失败(Python Compiler):

a = [1, 2, 2]
b = [3, 4, 4]
c = [5, 6, 6]

print('===previous')
print(id(a))
print(id(b))
print(id(c))
print('---previous')

for l in (a, b, c):
  l = list(dict.fromkeys(l))
  print('===middle')
  print(id(l))
  print('---middle')

print('===after')
print(id(a))
print(id(b))
print(id(c))
print(a)
print(b)
print(c)
print('---after')

我知道这是因为(Python 变量

变量(名称)只是对单个对象的引用。

只是想问一下是否有任何有效的方法可以实现这个目标,谢谢。

标签: pythonlistin-place

解决方案


使用集合。集合中不允许重复:

a = set(a)
b = set(b)
c = set(c)

如果您需要它们再次出现在列表中:

a = list(set(a))
b = list(set(b))
c = list(set(c))

推荐阅读