gpt4 book ai didi

删除列表中反向重复项的 Pythonic 方法

转载 作者:IT老高 更新时间:2023-10-28 20:57:06 26 4
gpt4 key购买 nike

我有一个配对列表:

[0, 1], [0, 4], [1, 0], [1, 4], [4, 0], [4, 1]

我想删除所有重复的地方

[a,b] == [b,a]

所以我们最终只有

[0, 1], [0, 4], [1, 4]

我可以对反向对进行内部和外部循环检查,如果不是这种情况,则附加到一个列表中,但我确信有一种更 Pythonic 的方式来实现相同的结果。

最佳答案

如果需要保留列表中元素的顺序的话,可以使用sorted map 的函数和集合理解像这样:

lst = [0, 1], [0, 4], [1, 0], [1, 4], [4, 0], [4, 1]
data = {tuple(item) for item in map(sorted, lst)}
# {(0, 1), (0, 4), (1, 4)}

或者干脆没有像这样的map:

data = {tuple(sorted(item)) for item in lst}

另一种方法是使用 frozenset,如图所示 here但是请注意,这仅在您的列表中有不同元素时才有效。因为像 set 一样,frozenset 总是包含唯一值。因此,您最终会在子列表中获得唯一值(丢失数据),这可能不是您想要的。

要输出一个列表,您总是可以使用 list(map(list, result)),其中 result 是一组元组,仅在 Python-3.0 或更高版本中。

关于删除列表中反向重复项的 Pythonic 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41164630/

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