gpt4 book ai didi

python - 带集合的列表的不同列表

转载 作者:太空宇宙 更新时间:2023-11-03 13:13:10 25 4
gpt4 key购买 nike

我创建了一个列表列表,然后尝试使用 set() 获取一个不同的列表列表,但看起来好像我不能在集合上使用列表。

是否有另一种方法可以通过简洁且性能良好的语句来完成此任务?

代码

x = [1,2]
y = [1,2]
z = [2,3]

xyz = []

xyz.append(x)
xyz.append(y)
xyz.append(z)

set(xyz)

错误

TypeError: unhashable type: 'list'

目标

xyz = [[1,2],[2,3]]

最佳答案

如果您想保留顺序并保留您的列表,您可以使用生成器函数从列表中删除重复项:

xyz = [x, y, z]

def remove_dupe_subs(l):
seen = set()
for sub in l:
tup = tuple(sub)
if tup not in seen:
yield sub
seen.add(tup)

xyz[:] = remove_dupe_subs(xyz)

或者使用生成器表达式利用 set.add 返回 None 的事实:

seen = set()
xyz[:] = (seen.add(tup) or sub for sub, tup in zip(xyz, map(tuple, xyz)) if tup not in seen)
print(xyz)

关于python - 带集合的列表的不同列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38256281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com