首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >除了二进位搜索树之外,是否有有效的数据结构来表示集合?

除了二进位搜索树之外,是否有有效的数据结构来表示集合?
EN

Stack Overflow用户
提问于 2019-03-12 22:20:25
回答 1查看 104关注 0票数 1

我们知道,在Haskell中,一组元素由Data.Set模块中的二进制搜索树表示,这是一种有效的方法。但是,大多数操作都要求elememt是Ord类的一个实例。

但是,一般集合不需要它的元素作为Ord的实例。因为集合是没有重复元素的地方,所以它的元素作为Eq类的一个实例就足够了。

在Haskell中,我只能想到一个链表的实现,就像默认的[a]一样,但是单链列表的效率不如BST,而BST需要Ord类。

顺便说一句,在Python中,set类不需要它的元素是可排序的。只有定义了__eq____ne__ (这是Haskell的Eq类的silimar )就足够了,例如:

代码语言:javascript
运行
AI代码解释
复制
class Fruit:
    def __init__(self, name):
        self.name = name.title()

    def __repr__(self):
        return self.name

    def __eq__(self, other):
        return self.name == other.name     # defines the equality operation

    def __ne__(self, other):
        return self.name != other.name     # defines the unequality operation

    def __hash__(self):
        return hash(self.name)     # so that Fruit instance can be an element of a set

?:X=水果(‘苹果’) Y=水果(‘苹果’) Z=水果(‘Apple’) ?:{x,y,z} {苹果] ?:x <= y 回溯(最近一次调用): 文件"",第1行,在模块中 X <= y TypeError:“水果”和“水果”实例之间不支持“<=”

因此,我想知道Haskell中是否有一些有效的数据结构可以用来表示Set,但不需要Ord类。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-12 23:12:06

Python在作弊。 is just a dictionary with no value.

Python可以作为动态类型化语言的一个副作用来解决这个问题。让Python跟踪it变量类型的机器也使得在它们上强制执行psudo排序变得很容易。

Haskell作为一种静态类型化语言,尤其是具有一流函数的静态类型化语言,不可能为数据类型创造任意排序。因此,Data.Set要求Ord是高效的。在没有排序的情况下,向集合添加一个新值就变成了O(n)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55135591

复制
相关文章
自动合并工作簿中各工作表数据
合并多表数据是工作中常见的情形。本文介绍一种在Excel及Power BI中不使用任何公式,快速合并一个工作簿中多个工作表的方法。
wujunmin
2021/09/07
1.6K0
自动合并工作簿中各工作表数据
VBA: 将多个工作簿的第一张工作表合并到一个工作簿中
文章背景: 在工作中,有时需要将多个工作簿进行合并,比如将多份原始数据附在报告之后。一般的操作方法是打开两个工作簿(目标工作簿和待转移的工作簿),然后选中需要移动的工作表,右键单击以后选择“移动或复制”。接下来在新的对话框里面进行设置。
Exploring
2022/09/20
6.4K0
VBA:  将多个工作簿的第一张工作表合并到一个工作簿中
Excel应用实践10:合并多个工作簿中的数据
我有超过50个具有相同格式的Excel文件,它们的列标题相同,并且都放置在同一文件夹,有什么快速的方法将它们合并到一个单独的Excel文件的一个工作表中?
fanjy
2019/07/19
2.4K0
快速汇总多个工作簿/工作表中的数据(Excel工具推荐)
很多数据散落在很多工作表或者工作簿中,由于某项工作我们需要将这些数据做个汇总。比方,我们有以下三个工作簿
wujunmin
2021/09/07
11.2K1
快速汇总多个工作簿/工作表中的数据(Excel工具推荐)
如何在前端应用中合并多个 Excel 工作簿
SpreadJS是纯前端的电子表格控件,可以轻松加载 Excel 工作簿中的数据并将它们呈现在前端浏览器应用的网页上。
葡萄城控件
2023/10/11
3970
如何在前端应用中合并多个 Excel 工作簿
VBA实例一、工作簿按表拆分成多个工作簿
大家好,本节主要介绍,通过VBA程序,将单个工作簿中的多个工作表,按表拆分成多个独立工作簿。
无言之月
2022/11/11
3.9K0
VBA实例一、工作簿按表拆分成多个工作簿
Excel应用实践11:合并多个工作簿中的数据——示例2
在上一篇文章《Excel应用实践10:合并多个工作簿中的数据》中,我们使用代码快速合并超过50个Excel工作簿文件,然而,如果要合并的工作簿中工作表的名称不相同,但位于每个工作簿的第1个工作表;并且,要在合并后的工作表的第1列中输入相对应的工作簿文件名,以便知道合并后的数据来自哪个工作簿文件。
fanjy
2019/07/19
2.9K0
Excel应用实践14:合并多个工作簿中的数据—示例3
要合并工作簿的情形有许多种,但最终的目的只有一条,将繁锁的手工操作自动化,让程序快速帮助我们完成这些重复的工作。
fanjy
2019/07/19
1.7K0
VBA代码:拆分工作簿示例——将工作簿中的每个工作表保存为单独的工作簿
只需在要拆分的工作簿中运行上述代码,就可将该工作簿中的所有工作表全部保存为单独的工作簿。
fanjy
2022/06/04
4.3K0
VBA代码:拆分工作簿示例——将工作簿中的每个工作表保存为单独的工作簿
yhd-VBA从一个工作簿的某工作表中查找符合条件的数据插入到另一个工作簿的某工作表中
【问题】我们在工作中有时要在某个文件(工作簿)中查找一些数据,提取出来。常用的方法是打开文件,来查找,再复制保存起来。如果数据少还是手工可以的,如果数据多了可能就。。。。
哆哆Excel
2022/10/31
5.8K0
常用功能加载宏——多个工作簿合并到一个工作簿
对于做管理工作的,收集表格这种工作应该会经常有,设计一个表格模板,发给各个有关单位去填写,收集起来后再合并到一起。
xyj
2020/07/28
2K0
常用功能加载宏——多个工作簿合并到一个工作簿
快速合并多个CSV文件或Excel工作簿
合并多个CSV文件、文本文件、Excel工作簿等操作是我们日常工作中经常碰到的事,如果一个一个文件复制粘贴,费时费力又容易出错。当然,可以使用VBA来解决,但前提是你必须懂VBA。这里有一个简单快速的方法,使用Power Query。
fanjy
2023/08/30
1.7K0
快速合并多个CSV文件或Excel工作簿
怎么快速合并多个多重表头的工作簿数据?
大海:既然已经处理好一个表的了,那这个就可以修改成一个自定义函数,遇到多个表的时候,先用自定义函数对每一个表转换好后再合并就行了哦。
大海Power
2021/08/31
1K0
Excel VBA在一个工作簿内把总表拆分多个工作表
Dim title_rng As Range, wb As Object, dic1 As Object
哆哆Excel
2022/10/25
2.6K0
ExcelVBA筛选法按分类条件拆分一个工作表为多个工作簿
对上次的文章进行优化 ==========代码如下===== Sub 筛选拆分() Dim d As Object, sht As Worksheet, arr, brr, r, kr, i&, j&, k&, x& Dim Rng As Range, Rg As Range, tRow&, tCol& Dim wb As Object, mysht As Worksheet Set d = CreateObject("scripting.dictionary") 'se
哆哆Excel
2022/10/31
3.7K1
Excel应用实践21:实现工作簿所有工作表中的多值替换
有两个工作簿,一个工作簿中存放着要查找并替换成的文本,如下图1所示,列A中是要查找的文本,将列A中查找到的文本替换成列B中相应的文本,例如,将找到的“Excel”替换成“完美Excel”。
fanjy
2019/09/29
3.2K0
ExcelVBA汇总多工作簿中指定工作表到新工作簿
哆哆Excel
2023/09/09
5080
ExcelVBA汇总多工作簿中指定工作表到新工作簿
ExcelVBA从工作簿中查询多个姓名并复制出整行数据
工作中用的代码 Sub ExcelVBA从工作簿中查询多个姓名并复制出整行数据() Dim outFile As String, inFile As String Dim outWb As Workbook, mysht As Worksheet, tempsht As Worksheet, t_arr(1 To 30) Dim SearchRange As Range Dim LastRow As Integer, arr, FindStr As String, i
哆哆Excel
2022/10/31
1.7K0
python合并工作表 VS excel合并工作表,看看合并工作表哪家强!
在日常办公工作中,我们可能会碰到多个或者几百上千个数据结构都相同 sheet工作表需要你进行合并汇总。而excel和python都能进行工作表的合并,那你知道他们两个的操作谁更为好用的吗?今天就分别介绍excel和python合并工作表的方法,看看合并工作表那家强!
Python与Excel之交
2021/08/05
1.7K0
Excel公式技巧54: 在多个工作表中查找最大值/最小值
要在Excel工作表中获取最大值或最小值,我们马上就会想到使用MAX/MIN函数。例如,下图1所示的工作表,使用公式:
fanjy
2020/09/17
12.3K0
Excel公式技巧54: 在多个工作表中查找最大值/最小值

相似问题

合并多个工作簿中的多个工作表

21

如何在r中合并excel工作簿的多个工作表?

20

在多个工作簿中查找in列表并返回值

13

通过将多个excel工作簿中的多个工作表合并为一个工作簿。R

119

如何在R中合并来自多个excel工作簿的多个工作表?

19
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档