本问题已经有最佳答案,请猛点这里访问。

很抱歉,如果这是一个基本问题,但是我想了解set类型在python中是如何工作的。

来自文档:

A set object is an unordered collection of distinct hashable objects.

Being an unordered collection, sets do not record element position or order of insertion.

但是,如果它们没有顺序,为什么我在这个测试中总是得到相同的顺序呢?我在等一些随机的订单。

users_ids = set([1, 1, 2, 3])

>>> print users_ids

set([1, 2, 3])

因为您使用的是整数,所以它们将按顺序散列。

@这并不总是。它还取决于整数的大小

@SMAC89这是一个公平的观点。

随机顺序不是无序的。无序意味着没有定义的数据排序方式,即插入顺序或数据与数据排列方式没有任何关联。

数据总是以可预测的顺序排列的原因,因为发生这种情况时,特定的实现选择始终以插入顺序指示数据顺序的方式排列元素。但是,不能保证会发生这种情况,我们确实在python 3.x字典实现中看到了这种偏差。

注意,即使我们看到数据已排序,

>>> {1,2,3,4,5}

set([1, 2, 3, 4, 5])

我们仍然称之为无序,除非文件严格规定并保证其订单,否则可能会有惊喜等待您。我见过依赖于集合和字典在插入模式中保持有序的事实的实现。当这些实现被移植到python 3.x时,会产生严重的后果。

γ

What’s New In Python 3.3

Security improvements:

Hash randomization is switched on by default.

您将共享一个描述Python3.x字典实现的链接,以及它与Python2.x的区别吗?

让我看看我是否理解。在python 2.7中,集合是无序的,但特定的实现保持插入顺序?!在这种情况下,它们可能是订购的,但在未来的版本中不能保证。我的理解正确吗?

@但是,3.3以后的差异是由于散列的随机性-请参阅stackoverflow.com/a/14959001/3001761

@用户2990084:说它保持插入顺序是错误的,但我的意思是,每次以特定的顺序插入相同的数据时,字典都会以定义的方式维护。

@用户2990084:我已经用链接更新了答案。

@用户2990084看到保留顺序的原因是您使用的是顺序整数。python 2.x散列的方式,您的示例恰好是"有序的"。

python中哪些是无序_关于无序集合:无序集合 – 在python中设置相关推荐

  1. python 数组合并排重_并排深度学习:Julia vs Python

    python 数组合并排重 Julia could possibly be the biggest threat to Python. For a variety of applications, J ...

  2. python难度大的题_早看少被坑!Python 最难的问题

    超过十年以上,没有比解释器全局锁(GIL)让Python新手和专家更有挫折感或者更有好奇心. 未解决的问题 随处都是问题.难度大.耗时多肯定是其中一个问题.仅仅是尝试解决这个问题就会让人惊讶.之前是整 ...

  3. python构造方法与java区别_一张图秒懂Java和Python的区别,你知道吗?

    对于程序员的语言千千万JAVA\C\C++\PHP\Python不同的程序员使用着不同的语言,做着功能相似需求却不同的产品. 但是最近Python在人工智能的推动下突然出现在人们的面前,其实和Java ...

  4. python程序员年薪百万_想要成为年薪百万的Python程序员,这套面试题别错过

    近几年来,Python的运用范围越来越广,发展势头十分强劲.小到网页建设.网站搭建,大到人工智能AI.云计算.人脸识别.大数据分析等等尖端技术,都基于Python编程语言来实现. 在小伙伴们通过参加培 ...

  5. python手机端编程环境_移动端自动化测试解决方案(Appium + Python) - (1) 环境搭建...

    最近对iOS自动化测试做了一番探究,希望通过自动化测试更好的去提高公司项目的测试效率 .在网上找了很多的文章和相关资料,都因为时间比较久导致无法实现基本环境的搭建,我在这儿分享给大家分享我的实现过程. ...

  6. python求列表最大值下标_切片,丝滑的字符串 | Python基础连载(三)

    开篇 之前已经提到过,在Python中,一共有六大数据类型 本期就开始学习Python的六个标准数据类型中的字符串. 什么是字符串 在Python中,字符串是用一对引号(单引号/双引号均可)包裹起来的 ...

  7. 一个用python做的完整项目_我从一个小项目学习Python编程的全过程(二)

    在(一)中的时候我们分析了如何获取所有人无忧币的统计情况,接下来开始学着写代码了: 首先第一步我们得把第一个页面的源代码:#coding:utf-8 import urllib url = 'http ...

  8. python必读5本书籍_免费下载!5本从Python入手机器学习的必备电子书!(附链接)...

    大数据文摘授权转载自数据派THU 作者:Richard Gall 编译:车前子.丁楠雅 今天,机器学习已成为软件工程所有领域中最重要的发展趋势之一.这门技术不再局限于研究者和数据分析者,从网络安全到网 ...

  9. 编程入门python java和c语言_学习编程适不适合从Python入门?哪种语言更适合入门?...

    本文对比了C语言和Python语言,分析它们作为编程入门语言各自的利弊,并给出了我推荐的编程学习道路. 我本身已经入门了Python脚本语言,在进阶C语言和JAVA语言后,Python重学就轻松很多, ...

  10. python开发转行做数据分析_转行学IT,Java、Python、大数据选择学哪个发展好?

    对薪资不满意.担心自己以后不好找工作,不少人都会选择参加培训,转行IT行业.当然很多想要转行IT的人,都会犹豫选择哪门编程语言学习比较好,Python.Java.大数据作为比较热门行业技术,不少人都很 ...

最新文章

  1. Net设计模式实例之解释器模式(Interpreter Pattern)
  2. Android --- 使用纯java代码实现相对布局(通俗易懂)
  3. QlikSense移动端使用攻略
  4. CSS魔法堂:你一定误解过的Normal flow
  5. 附005.Docker Compose文件详解
  6. SUSE11 搭建iscsi target 配置
  7. 账户配置 三: Gmail
  8. kafka消息存储格式
  9. hive当前日期超前_微博数仓数据延时优化方案
  10. linux php添加mysql扩展模块_linux下为php添加扩展库的方法
  11. 数据采集和数据预处理
  12. 用计算机弹极乐净土谱,极乐净土计算器乐谱
  13. goahead如何使用cgi服务_利用GoAhead构建嵌入式web应用
  14. VvvebJs可视化前端设计开发工具
  15. 中富之命能有多少钱_算命中富 算命的说我是中富命,谁可以帮忙解释下
  16. IDEA搭建POI导入导出Excel入门版
  17. linux sudoers文件损坏修复
  18. 单例模式的四种实现方式(饿汉模式、懒汉模式、静态内部类、枚举类)
  19. diyUpload - jQuery多张图片批量上传插件
  20. 将来安徽各大楼宇和小区将是这样的......

热门文章

  1. windows10 导入 oracle11g dmp文件方法(详细!!!)
  2. 微信公众平台开发(46)在线电影/移动影院
  3. FCPX插件:屏幕分屏特效插件Stupid Raisins Split Pop
  4. comp9334辅导 proj2
  5. 【buuctf】cscctf_2019_qual_babyheap
  6. 2019ICPC亚洲区域赛南京网络赛
  7. Node.js(MEAN)全栈开发入门-安晓辉-专题视频课程
  8. 一网打尽OkHttp中的缓存问题
  9. php 数组 时间戳排序,php – 按时间戳排序Summed Collection
  10. dnsmasq mysql_OpenStack Ironic之inspect自检