python中什么是一个无序的不重复元素序列_无序Python集的“顺序”
您应该观看此视频(尽管它是CPython1特定的并且是关于字典的-但我认为它也适用于集合)。
基本上,python对元素进行哈希处理并获取最后N位(其中N由集合的大小确定),然后使用这些位作为数组索引将对象放置在内存中。 然后按照它们在内存中存在的顺序产生对象。 当然,当您需要解决哈希之间的冲突时,图片会稍微复杂一些,但这就是要点。
还要注意,它们的打印顺序取决于您放置它们的顺序(由于碰撞)。 因此,如果您重新排序传递给dict的列表,则在发生键冲突时可能会得到其他排序。
例如:
list1 = [8,16,24]
set(list1) #set([8, 16, 24])
list2 = [24,16,8]
set(list2) #set([24, 16, 8])
请注意,顺序保留在这些集合中的事实是“巧合”,并且与冲突解决有关(我一无所知)。 关键是dict、set和dict的后3位相同。 因为它们相同,所以冲突解决方案将接管并将元素放置在“备份”存储位置,而不是第一个(最佳)选择,因此,是2952094334176176461827占据一个位置还是2952094334334176461828占据哪个位置,由哪个人首先到达聚会并接受 “最佳座位”。
如果我们用dict、set和dict重复该示例,则无论它们在输入列表中的顺序如何,您都将获得一致的顺序:
list1 = [1,2,3]
set(list1) # set([1, 2, 3])
list2 = [3,2,1]
set(list2) # set([1, 2, 3])
因为dict的后3位,set和dict是唯一的。
1注意:这里描述的实现适用于CPython dict和set。我认为一般描述对所有最新的CPython版本(最高3.6版)均有效。 但是,从CPython3.6开始,还有一个额外的实现细节,实际上保留了dict的迭代插入顺序。看来set仍然没有此属性。 pypy(此人在CPython之前就开始使用它)在此博客中描述了数据结构。 最初的想法(至少对于python生态系统而言)存储在python-dev邮件列表中。
python中什么是一个无序的不重复元素序列_无序Python集的“顺序”相关推荐
- 请写出一段 python 代码实现删除一个 list 里面的重复元素
请写出一段 python 代码实现删除一个 list 里面的重复元素 方法一:利用set集合实现 info = [2017,1,16,9,2017,1,16,9] result = list(set( ...
- 关于python中的复数类型、下列说法错误的是_关于 Python中的复数,下列说法错误的是( )_学小易找答案...
[单选题]下列关于运算符优先级的描述中,错误的是 . [判断题]Java 语言中定义符号常量使用final关键字.( ) [判断题]捕获异常时try语句后面通常跟有一个或多个catch()方法用来处理 ...
- python中的main函数可以被其他文件调用么_在Python中,如何在另一个py文件的[if\u name\uuuu='\uu main\uu']中调用子例程?...
你不能"调用它的主函数",因为它没有主函数. 事实上,通常的处理方法是将所有这些代码移到一个函数中,然后使 __main__ 警戒代码就是这么叫的: def main(args): ...
- python中列表、元组、字符串都属于有序序列_列表、元组、字符串是Python的有序序列。...
列表.元组.字符串是Python的有序序列. 答:√ 根据<劳动合同法>第五十八条的规定,劳务派遣单位应当与被派遣劳动者订立( ). 答:二年以上的固定期限劳动合同 理性的基础是(). 答 ...
- 请写出一段Python代码实现删除一个list里面的重复元素
1,使用set函数,set(list) 2,使用字典函数, >>>a=[1,2,4,2,4,5,6,5,7,8,9,0]>>> b={}>>>b= ...
- python注销一段代码_请写出一段Python代码实现删除一个list里面的重复元素?
方法1:使用set函数 s=set(list),然后再list(s) 方法2:append 1 defdelList(L):2 L1 =[]3 for i inL:4 if i not inL1:5 ...
- 从Python中的另一个文件调用函数
本文翻译自:Call a function from another file in Python Set_up: I have a .py file for each function I need ...
- Python中如何定义一个函数
任何编程语言知识它的基础知识都是有些枯燥的,我们一定要多练习, 多实践.下面小编来将一下Python中如何定义一个函数. 最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可 ...
- python的input添加变量_在python中如何定义一个全局变量raw_input() 与 input()的区别...
raw_input和input两个均是 python 的内建函数,通过读取控制台的输入与用户实现交互.但他们的功能不尽相同.下面举两个例子,来说明两者使用上的不同. 例子1Python 2.7.5 ( ...
最新文章
- Linux: Nginx proxy_pass域名解析引发的故障
- Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (16) - L1数据缓存/存储转发访存消歧存储体冲突
- python实现解析oui.txt并抽取MAC前缀及组织名称
- java对类数组进行排序_Java比较器类对数组进行排序
- 人工智能大火能否烧开智能家居这锅水?
- LayaAir cacheAs 缓存与 visible 隐藏
- Windows 7 纯净版各版本下载
- Android 签名打包
- PackageManager使用详解
- 英雄联盟加载的时候特卡,排查记录:win10那些破玩意
- 惊呆了,Java居然已经内卷成菜花啦。
- 最佳阵容 | Flutter Firebase 插件更新
- 2019年第四届天梯赛 CCCC 赛后总结(写一下)
- python怎么自学
- android 地铁地图api,入门指南-地铁图 JS API | 高德地图API
- Pytorch入门:LeNet手写字体识别案例
- led灯实现跑马灯效果,达到设定时间(2秒)两LED灯全部亮起,持续时间1秒,而后重新恢复跑马灯效果;
- 绑定句柄无效错误的解决办法
- 毕业论文排版(二)-页面设置
- WEB开发36式打狗棒法