繁体   English   中英

(Python) 就地修改几个列表

[英](Python) Modify several lists in-place

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

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 变量

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

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

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

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM