【发布时间】:2020-04-19 22:26:54
【问题描述】:
我有一个包含 3 个整数的列表,如下所示:
myList = [[1,2,3],[2,4,3],[2,1,3],[3,2,4],[5,4,3],[4,3,2],[5,4,3], [3,4,2]]
如果列表在 myList 中有对称,我想删除它。例如。 [1,2,3] 和 [3,2,1] 是对称的,[1,2,3] 或 [3,2,1] 可以保留在新列表中,但不能同时保留。
我尝试排序以摆脱对称列表
myList = [[1,2,3],[2,4,3],[2,1,3],[3,2,4],[5,4,3],[4,3,2],[5,4,3], [3,4,2]]
result = set()
for elem in myList:
result.add(tuple(sorted(elem)))
result = list(result)
print(result)
代码结果为:
[(3, 4, 5), (2, 3, 4), (1, 2, 3)]
虽然我确实摆脱了对称列表,但我希望将每个数字的位置保持在中间不变,并且仅通过考虑它们的第一个和第三个整数来按递增/递减顺序对每个列表进行排序.
例如。 [2,4,3],[3,2,4],[3,4,2] 应该排序为 -> [2,4,3],[3,2,4],[2,4,3] 然后我可以摆脱相同的 -> [2,4,3],[3,2,4]
您能否建议我一种方法来对 myList 中的列表中的整数进行排序,但通过跳过每个列表的中间值,如下所示,以便我可以消除对称列表?
【问题讨论】:
-
[3, 1, 2]是否也与[1, 2, 3]对称? -
不,不是。我所说的对称是指 [x,y,z] 和 [z,y,x]。
-
另外,根据选择标准,原始列表中只能保留一个元素