前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试题-python3 里面的集合(set)到底是有序还是无序的?

面试题-python3 里面的集合(set)到底是有序还是无序的?

作者头像
上海-悠悠
发布2021-03-19 11:49:51
4.3K1
发布2021-03-19 11:49:51
举报

前言

集合,简称集,是数学中一个基本概念,主要有以下两个特征:

  • 一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次
  • 一个集合中,每个元素的地位都是相同的,元素之间是无序的。

集合(set)

集合(set)是一个无序的不重复元素序列。可以使用大括号 { } 或者 set() 函数创建集合。 注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

代码语言:javascript
复制
# 定义空集合
a = set()
print(a)   # set()

# 会去除重复元素
b = set('acbabdef')
print(b)   # {'f', 'd', 'b', 'c', 'e', 'a'}

前面讲到一个列表生成可以用列表推倒式,使用中括号[]

代码语言:javascript
复制
c = [i for i in range(10)]
print(c)   # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

那么集合也有集合推倒式,使用大括号{}

代码语言:javascript
复制
d = {i for i in range(10)}
print(d)  # {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

2个集合之间的运算

代码语言:javascript
复制
f1 = {"a", "b", "c", "d"}
f2 = {"a", "d", "e", "f"}

# 1.集合a中包含而集合b中不包含的元素
print(f1 - f2)
# 2.集合a或b中包含的所有元素
print(f1 | f2)
# 3.集合a和b中都包含了的元素
print(f1 & f2)
# 4.不同时包含于a和b的元素
print(f1 ^ f2)

运行结果

代码语言:javascript
复制
{'b', 'c'}
{'b', 'a', 'f', 'c', 'd', 'e'}
{'d', 'a'}
{'b', 'f', 'c', 'e'}

集合是有序还是无序?

有时候我们会有一种错觉,认为集合是有序的,先看下面一个案例

代码语言:javascript
复制
# 去除a里面的重复元素

a = [1, 3, 2, 6, 2, 4, 3, 1, 2]
print(set(a))

# 转list
print(list(set(a)))

得到的结果

代码语言:javascript
复制
{1, 2, 3, 4, 6}
[1, 2, 3, 4, 6]

从结果看,发现使用集合去重后,自动从小到大排序了,于是容易产生一个误区,得出集合会自动排序。 这里排序的主要原因是python3版本,对于数据量很小的集合并且数字很少的时候,确实是做了一个排序。接下来把数字调大一点再看

代码语言:javascript
复制
# 去除a里面的重复元素

a = [1, 3, 122, 6, 2, 4, 3, 1, 2, 22, 34, 22, 99, 200]
print(set(a))

# 转list
print(list(set(a)))

# 运行结果
{1, 2, 3, 4, 34, 6, 99, 200, 22, 122}
[1, 2, 3, 4, 34, 6, 99, 200, 22, 122]

这时候会发现,没按从小到大排序,接着把数字换成英文字符

代码语言:javascript
复制
a = ["a", "b", "c", "d", "a", "c"]
print(set(a))

# 转list
print(list(set(a)))

运行结果:

代码语言:javascript
复制
{'b', 'c', 'a', 'd'}
['b', 'c', 'a', 'd']

每次运行的结果都不一样,说明集合是无序的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 集合(set)
  • 集合是有序还是无序?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档