What is the most time efficient way to remove unordered duplicates in a 2D array?(删除二维数组中无序重复项最省时的方法是什么?)
问题描述
我使用 itertools
生成了一个组合列表,我得到的结果如下所示:
I've generated a list of combinations, using itertools
and I'm getting a result that looks like this:
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)]
去除无序重复项的最节省时间复杂度的有效方法是什么,例如 x[0]
和 x[1]
是重复项.有什么内置的东西可以处理这个吗?
What is the most time-complexity wise efficient way of removing unordered duplicates, such as x[0]
and x[1]
are the duplicates. Is there anything built in to handle this?
我的一般方法是创建一个包含所有元素的计数器并与下一个进行比较.这会是最好的方法吗?
My general approach would be to create a counter of all elements in one and compare to the next. Would this be the best approach?
感谢您的指导.
推荐答案
既然你想找到无序的重复,最好的方法是通过类型转换.Typecast 它们为 set
.因为 set 只包含 immutable 元素.所以,我做了一组tuples
.
Since you want to find unordered duplicates the best way to go is by typecasting. Typecast them as set
. Since set only contains immutable elements. So, I made a set of tuples
.
注意:消除重复的最佳方法是对给定元素进行set
.
Note: The best way to eliminate duplicates is by making a
set
of the given elements.
>>> set(map(tuple,map(sorted,x)))
{(-3, -2, 4, 5), (-5, 0, 4, 5)}
这篇关于删除二维数组中无序重复项最省时的方法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:删除二维数组中无序重复项最省时的方法是什么?
基础教程推荐
- 筛选NumPy数组 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01