(Python) 就地修改多个列表

(Python) Modify several lists in-place

我想从多个列表中删除重复项(就地)。已尝试以下但失败 (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 Variable)

Variables (names) are just references to individual objects.

想问一下有没有什么有效的方法可以达到这个目的,谢谢

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

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

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

a = list(set(a))
b = list(set(b))
c = list(set(c))
a = [1, 2, 2]
b = [3, 4, 4]
c = [5, 6, 6]


a=list(dict.fromkeys(a))
b=list(dict.fromkeys(b))
c=list(dict.fromkeys(c))


print(a)
print(b)
print(c)

您必须覆盖值而不是变量名。如果您需要修改动态数量的列表,则可以通过获取每个列表的完整切片来覆盖列表中的所有值:

for my_list in (a, b, c):
     my_list[:] = set(my_list)