我有一个python列表:
[ (2,2),(2,3),(1,4),(2,2), etc...]
我需要的是某种函数,把它简化成它独特的组件。。。在上面的列表中:
[ (2,2),(2,3),(1,4) ]
numpy unique并不完全这样做。我能想出一种方法——把我的元组转换成数字,[22,23,14,etc.]
,找到uniques,然后从那里开始工作……但我不知道复杂性是否不会失控。有没有一个函数能像我对元组所做的那样?
下面是演示该问题的代码示例:
import numpy as np
x = [(2,2),(2,2),(2,3)]
y = np.unique(x)
returns: y: [2 3]
下面是演示修复的解决方案的实现:
x = [(2,2),(2,2),(2,3)]
y = list(set(x))
returns y: [(2,2),(2,3)]
如果订单无关紧要
如果结果的顺序不重要,可以将列表转换为集合(因为元组是散列的),并将集合转换回列表:
如果订单重要
(更新)
从CPython 3.6(或任何python3.7版本)开始,常规字典都会记住它们的插入顺序,因此您可以简单地发出。
(旧答案)
如果顺序很重要,则筛选重复项的标准方法是:
最后,再慢一点,再黑一点,就可以将
OrderedDict
滥用为有序集:使用
set
将删除重复项,然后从中创建list
:你只需要
原因是元组列表被numpy解释为2D数组。通过设置axis=0,您将要求numpy不要展平数组并返回唯一的行。
相关问题 更多 >
编程相关推荐