我有一个二维列表,我创建如下:
Z1 = [[0 for x in range(3)] for y in range(4)]
然后我继续填充这个列表,使Z1
如下所示:
[[1, 2, 3], [4, 5, 6], [2, 3, 1], [2, 5, 1]]
我需要提取Z1
的唯一1x3
元素,而不考虑顺序:
Z2 = makeUnique(Z1) # The solution
Z2
的内容应如下所示:
[[4, 5, 6], [2, 5, 1]]
如您所见,我认为[1, 2, 3]
和{
还要注意,单个数值可能在元素中出现多次(例如[2, 3, 1]
和[2, 5, 1]
);只有当所有三个值同时出现(以相同或不同的顺序)时,我才认为它们是重复的。在
我搜索了几十个类似的问题,但似乎没有一个能解决我的确切问题。我是一个完全的Python初学者,所以我只需要朝着正确的方向努力。在
我已经试过了:
Z2= dict((x[0], x) for x in Z1).values()
Z2= set(i for j in Z2 for i in j)
但这并不能产生期望的行为。在
非常感谢你的帮助!在
路易斯瓦尔斯
如果子列表中元素的顺序不重要,则可以使用以下命令:
一些评论:
[1, 2, 3]
和{Counter
分组tuple
将list
转换为可散列的内容,因此可以用作dictionary
键。在Counter
创建一个dict
,上面创建的tuple
作为键,值等于它们在原始list
中出现的次数list-comprehension
从Counter dictionary
中获取计数为1的所有键。在如果顺序重要,可以使用以下方法代替:
^{pr2}$相关问题 更多 >
编程相关推荐