集合是无序和无索引的集合。在 Python 中,集合用花括号编写。无法通过引用索引来访问 set 中的项目,因为 set 是无序的,项目没有索引。但是可以使用 for 循环遍历 set 项目,或者使用 in 关键字查询集合中是否存在指定值。以下文章供大家参考、学习,如有错误,多多指出,谢谢大家!
集合的概念
- 集合的底层是字典,集合中的所有元素就是字典中的键,所以集合最主要的特点就是其中的元素不能重复。
- 集合中的元素是无序的。
- 使用 set()函数 可以将其他对象转换为集合。
集合示例:
代码语言:javascript复制>>> a = {20,21,22,80,21,8080} #定义集合,添加重复元素 21
>>> a
{80, 8080, 20, 21, 22}
>>> b = 'Hello Python'
>>> c = set(b)
>>> c
{' ', 'H', 'P', 'l', 'h', 'n', 'e', 't', 'y', 'o'}
#可以看到 最后变量 都是无序的,并且元素中去除了重复数据
集合常用的基本方法
remove方法:
清除集合中的指定元素
代码语言:javascript复制>>> a.remove(8080)
>>> a
{80, 20, 21, 22}
clear方法:
清除集合中所有元素
代码语言:javascript复制>>> a.clear()
>>> a
set()
集合的并集、交集、差集
- 并集 | :合并数据并去重进行输出
- 交集 &:合并数据找出重复进行输出
- 差集 - :去除前者在后者不存在的元素进行输出
并集示例
代码语言:javascript复制>>> a = {21,22,23,80}
>>> b = {25,80,443,8080}
>>> a | b #合并去重
{80, 8080, 21, 22, 23, 25, 443}
交集示例
代码语言:javascript复制>>> a = {21,22,23,80}
>>> b = {25,80,443,8080}
>>> a & b #80为双方相同元素,输出80
{80}
差集示例
代码语言:javascript复制>>> a = {21,22,23,80}
>>> b = {25,80,443,8080}
>>> a - b #只输出b中不包含a中的元素
{21, 22, 23}
练习
代码语言:javascript复制将1,2,⋯,9共99个数分成3组,分别组成3个三位数,且使这3个三位数构成1:2:3的比例,试求出所有满足条件的3个三位数。 若干行,每行 33 个数字。按照每行第 11 个数字升序排列。
>>> for i in range(100,334): #三位数由于最后一位 *3 所以最大应该是333
... m = i*2 #第二位数 * 2
... n = i*3 #第三位数 * 3
... key = str(i) str(m) str(n) #转换成字符拼接为key变量
... flag = set(key) #set()进行去重赋值给flag变量
#定义key中不能存在0且 flag的字符长度等于9输出 i,m,n
... if '0' not in key and len(flag) ==9:
... print(i,m,n)
...
192 384 576
219 438 657
273 546 819
327 654 981