python - 删除列表中存在的重复整数列表,而不考虑整数列表的排序
问题描述
l1 = [[1, 2, -1], [1, 0, 1], [2, 1, -1], [1, -1, 2]]
对于我的情况
[1, 2, -1]
,被认为等于[2, 1, -1]
等于[1, -1, 2]
。本质上,订购并不重要。
[1, 2, -1] = [2, 1, -1] = [1, -1, 2]
在上述情况下,我只需要保留这 3 个中的 1 个(这三个中的任何一个都可以)。
因此,删除重复项后,列表现在必须具有l1 = [[1, 2, -1], [1, 0, 1]]
orl1 = [[2, 1, -1], [1, 0, 1]]
或l1 = [[1, -1, 2], [1, 0, 1]]
我已经尝试对单个列表进行排序(但这让我失去了看到三胞胎的顺序)并将每个单独的列表放入字典中(TypeError: unhashable type: 'list'
)
笔记:
当我说“不考虑整数列表的排序”时,我的意思是如果我的列表中有 3 个列表具有相同的整数,那么排序不同?这3个列表被认为是相同的!您可以从这 3 个列表中删除 2 个,但保留未删除列表的顺序,
我举了一个例子,表明对于我的 list 列表l1 = [[1, 2, -1], [1, 0, 1], [2, 1, -1], [1, -1, 2]]
,[[-1, 1, 2], [0, 1, 1]]
是不可接受的,因为[-1, 1, 2]
它实际上并没有以那个确切的顺序出现在原始数组中![-1, 1, 2] = [1, 2, -1] = [2, 1, -1] = [1, -1, 2]
是真的!如果我的清单中有这 4 个元素。但是,我的列表中没有 [-1, 1, 2] !
也很重要:
我的整数列表中可能有重复的元素。
l1 = [[1, 0, 0], [0, 1, 0], [-1, 0, 1]]
这里:[1, 0, 0]
= [0, 1, 0]
,当返回我的输出时,我需要删除这两个中的一个。
我要强调的一点是,2
这些单独的列表中有零(我认为这也是重要的细节)。
解决方案
您可以使用对列表进行排序sorted
,然后检查并附加到结果。
前任:
l1 = [[1, 2, -1], [1, 0, 1], [2, 1, -1], [1, -1, 2]]
checkVal = []
r = []
for i in l1:
val = sorted(i)
if val not in checkVal:
checkVal.append(val)
r.append(i)
print(r)
输出:
[[1, 2, -1], [1, 0, 1]]
推荐阅读
- json - 使用 Vue 过滤以检索嵌套对象中的特定值
- python - ShuffleNet v2 在训练时突然将绝大多数样本归为同一类别
- android - 如何将android webview保持在后台(使用位置)
- validation - 使用 Linux Arm64 Chrome Duet 设置 Chainlink 节点
- css - 如何删除填充顶部和底部以设置高度和宽度
- javascript - 如何为交互式 D3 图表构建 Vue
- php - 使用 Laravel 记录黑客活动
- compilation - 为 32 位 windows 编译 massCode
- google-apps-script - 突然收到 GmailApp.SendEmail 错误
- python - Pytorch 几何:如何解释以下代码片段中的输入?