删除二维数组中无序重复项的最省时方法是什么?

Saf*_*der 7 python list set python-itertools python-3.x

我已经生成了一个组合列表,使用itertools并得到如下所示的结果:

nums = [-5,5,4,-3,0,0,4,-2]
x = [x for x in set(itertools.combinations(nums, 4)) if sum(x)==target]
>>> x = [(-5, 5, 0, 4), (-5, 5, 4, 0), (5, 4, -3, -2), (5, -3, 4, -2)]
Run Code Online (Sandbox Code Playgroud)

删除无序重复项(例如x[0]x[1]是重复项)的时间复杂度最高的有效方法是什么。有没有内置的东西来处理这个问题?

我的一般方法是在一个元素中创建一个所有元素的计数器,然后与下一个元素进行比较。这会是最好的方法吗?

感谢您的任何指导。

Ch3*_*teR 7

由于您想找到无序的重复项,最好的方法是通过类型转换。它们类型转换为set. 因为 set 只包含不可变元素。所以,我做了一组tuples

注意:消除重复项的最佳方法是set对给定元素制作 a 。

>>> set(map(tuple,map(sorted,x)))
{(-3, -2, 4, 5), (-5, 0, 4, 5)}
Run Code Online (Sandbox Code Playgroud)