【问题标题】:Removing permutations from a list of tuples [duplicate]从元组列表中删除排列[重复]
【发布时间】:2013-03-12 03:52:30
【问题描述】:

感谢您对此问题的任何帮助。

我有一个元组列表

a = [(1,2), (2,1), (1,3), (1,4), (4,1)]

并且我需要删除某种类型的重复项:根据我的定义,(1,2) 和 (2,1) 被视为重复项。所需输出

a = [(1,2), (1,3), (1,4)]

提前致谢

【问题讨论】:

    标签: python python-2.7


    【解决方案1】:

    您可以对它们进行排序,然后使用set() 删除重复项:

    >>> set(tuple(sorted(l)) for l in a)
        set([(1, 2), (1, 3), (1, 4)])
    

    【讨论】:

    • 第一种方法行不通。 (1,1) 是一个元组,但它会变成frozenset([1])。第二种方法虽然有效。
    • @DmitryRubanovich: (1, 1) 是恒等排列,所以(1, 1)(1,)frozenset([1]) 是等价的。
    • 他没有说元组本身就是排列。他只是说他想删除作为列表中其他元组排列的元组。删除 (1,1) 并用 (1,) 替换它不会这样做。
    • @DmitryRubanovich:啊,你说得对。我将删除可能存在错误的代码。
    • @Blender,如果需要维护对象类型,可以使用list(set(tuple(sorted(l)) for l in a))吗?
    猜你喜欢
    • 2018-10-17
    • 2019-06-12
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    相关资源
    最近更新 更多