【Python官方网站对集合 set 的定义,链接:5. 数据结构 — Python 3.7.13 文档,https://docs.python.org/zh-cn/3.7/tutorial/datastructures.html#sets】Python也包含有 集合 类型。集合是由不重复元素组成的无序的集。它的基本用法包括成员检测和消除重复元素。集合对象也支持像 联合,交集,差集,对称差分等数学运算。
本文是个人在学习中的一些心得,不能保证文中的内容准确,欢迎大家批评指正。本文环境:Python 3.7.4、Geany 1.38。
集合 set 是Python中的一种数据容器。集合 set 是一种无序、不重复、无索引的数据集。【无索引本文还未加入实例】
集合有2种定义方式。
新建集合方法1-花括号 {} ,花括号内加入集合的元素,元素之间用逗号 , 分隔。
上机代码:
# 集合的无序、不重复元素展示。
aSet = {"a","abc","a",1,1.2,1,1.2}
print(aSet)
print(type(aSet))
结果截图:
在结果中可以看出,虽然在定义中有重复元素,但生成的集合是没有重复元素的,也是和定义的顺序不同的。集合是无序、不重复的数据集。
【个人心得】集合和字典的区别,集合看起来像是字典把值去掉,只保留键。所以集合是否能看成是字典键的数据容器呢?集合中元素不能重复和字典的键不能重复是相同的。
注意:花括号 {} 中如果是空的,将建立一个空的字典。
上机代码:
aSet = {}
print(aSet)
print(type(aSet))
结果截图:
新建集合方法2-函数 set 不加参数,建立一个空的集合
上机代码:
aSet = set()
print(aSet)
print(type(aSet))
结果截图:
新建集合方法3-函数 set 加参数及原理:将可迭代对象进行遍历后的元素添加到集合中。
原文 | 重点解析 |
将可迭代对象 | 可迭代对象:列表、元组、字典、字符串、集合 |
进行遍历后的元素 | 遍历for循环就是一种遍历。字符串遍历后的元素是单个的字符的字符串。 |
添加到集合中 |
函数 set 参数使用可迭代对象:列表
上机代码:
print("函数 set 原理:将可迭代对象进行遍历后的元素添加到集合中")
print("函数 set 参数使用可迭代对象:列表")
aSet = set(["a","abc",1,1.2])
print(aSet)
print(type(aSet))
函数 set 参数使用可迭代对象:元组
上机代码:
print("函数 set 原理:将可迭代对象进行遍历后的元素添加到集合中")
print("函数 set 参数使用可迭代对象:元组 tuple")
aSet = set(("a","abc",1,1.2))
print(aSet)
print(type(aSet))
函数 set 参数使用可迭代对象:字典
上机代码:
print("函数 set 原理:将可迭代对象进行遍历后的元素添加到集合中")
print("函数 set 参数使用可迭代对象:字典")
aSet = set({"#1":"a","#2":"abc","#3":1,"#4":1.2})
# 参数中字典的键成为集合的元素,值被抛弃
print(aSet)
print(type(aSet))
函数 set 参数使用可迭代对象:字符串
上机代码:
print("函数 set 原理:将可迭代对象进行遍历后的元素添加到集合中")
print("函数 set 参数使用可迭代对象:字符串 string")
aSet = set("abcefg")
# 参数中可迭代对象字符串被遍历后的元素单个字符添加到集合中
print(aSet)
print(type(aSet))
函数 set 参数使用可迭代对象:单个字符的字符串
上机代码:
print("函数 set 原理:将可迭代对象进行遍历后的元素添加到集合中")
print("函数 set 参数使用可迭代对象:单个字符的字符串 string")
bSet = set("q")
# 参数中可迭代对象字符串被遍历后的元素单个字符添加到集合中
print(bSet)
print(type(bSet))
函数 set 参数使用可迭代对象:集合
上机代码:
print("函数 set 原理:将可迭代对象进行遍历后的元素添加到集合中")
print("函数 set 参数使用可迭代对象:集合 set")
aSet = {"abc",1,1.1}
bSet = set(aSet)
print(bSet)
print(type(bSet))
上机代码合集:
print("函数 set 原理:将可迭代对象进行遍历后的元素添加到集合中")
print("函数 set 参数使用可迭代对象:列表")
aSet = set(["a","abc",1,1.2])
print(aSet)
print(type(aSet))
print("函数 set 参数使用可迭代对象:元组 tuple")
aSet = set(("a","abc",1,1.2))
print(aSet)
print(type(aSet))
print("函数 set 参数使用可迭代对象:字典")
aSet = set({"#1":"a","#2":"abc","#3":1,"#4":1.2})
# 参数中字典的键成为集合的元素,值被抛弃
print(aSet)
print(type(aSet))
print("函数 set 参数使用可迭代对象:字符串 string")
aSet = set("abcefg")
# 参数中可迭代对象字符串被遍历后的元素单个字符添加到集合中
print(aSet)
print(type(aSet))
print("函数 set 参数使用可迭代对象:单个字符的字符串 string")
bSet = set("q")
# 参数中可迭代对象字符串被遍历后的元素单个字符添加到集合中
print(bSet)
print(type(bSet))
print("函数 set 参数使用可迭代对象:集合 set")
aSet = {"abc",1,1.1}
bSet = set(aSet)
print(bSet)
print(type(bSet))
【结果截图合集:】
函数 set 不可加参数:不可迭代对象,如整形 int ,浮点型 float
上机代码:
print("函数 set 原理:将可迭代对象进行遍历后的元素添加到集合中")
print("函数 set 参数使用不可迭代对象:整型 int")
aSet = set(1)
print(aSet)
print(type(aSet))
结果截图:
错误提示:
TypeError:’int’ object is not iterable
上机代码:
print("函数 set 原理:将可迭代对象进行遍历后的元素添加到集合中")
print("函数 set 参数使用不可迭代对象:浮点型 float")
aSet = set(1.414)
print(aSet)
print(type(aSet))
结果截图:
错误提示:
TypeError:’float’ object is not iterable
增长集合-集合内置方法 add() 原理:将括号内一个可哈希(不可变)对象添加到集合 set 中
集合名.add(一个可哈希(不可变)对象):将括号内的一个可哈希(不可变)对象添加到集合 set 中,如果对象已存在,则不进行任何操作。集合的内置方法 add() 只能接收一个参数。
不能增长集合-集合内置方法 add() 添加已存在对象
上机代码:
# 集合 set 内置方法 add() 训练
aSet = {"a","abc",1,1.1}
print("集合的初始状态:")
print(aSet)
# 向集合内添加一个已存在的对象
aSet.add("a")
print("集合添加元素后的状态:")
print(aSet) # 集合内已有元素,不执行任何操作
结果截图:
增长集合-集合内置方法 add() 添加不可变类型:整型、浮点型、单个字符、字符串、元组实例
上机代码:
# 集合 set 内置方法 add() 训练
aSet = {"a","abc",1,1.1}
print("集合的初始状态:")
print(aSet)
# 向集合内添加整型
aSet.add(81)
print("集合添加整型81后的状态:")
print(aSet)
# 向集合内添加浮点型
aSet.add(1.414)
print("集合添加浮点型1.414后的状态:")
print(aSet)
# 向集合内添加单个字符
aSet.add("b")
print('集合添加单个字符"b"后的状态:')
print(aSet)
# 向集合内添加字符串
aSet.add("qs")
print('集合添加字符串"qs"后的状态:')
print(aSet)
# 向集合内添加元组
aTuple = ("x","xyz",6,6.6)
aSet.add(aTuple)
print("集合添加元组aTuple后的状态:")
print(aSet)
结果截图:
不能增长集合-集合内置方法 add() 添加可变类型:列表、字典、集合实例
集合 set 内置方法 add() 列表类型训练上机代码:
# 集合 set 内置方法 add() 列表类型训练
aSet = {"a","abc",1,1.1}
print("集合的初始状态:")
print(aSet)
# 向集合内添加列表型
aList = [1,2,3]
aSet.add(aList)
print("集合添加列表型后的状态:")
print(aSet)
结果截图:
集合 set 内置方法 add() 字典类型训练上机代码:
# 集合 set 内置方法 add() 字典类型训练
aSet = {"a","abc",1,1.1}
print("集合的初始状态:")
print(aSet)
# 向集合内添加字典型
aDict = {"a":1,"b":2,"c":3}
aSet.add(aDict)
print("集合添加字典型后的状态:")
print(aSet)
结果截图:
集合 set 内置方法 add() 集合类型训练上机代码:
# 集合 set 内置方法 add() 集合类型训练
aSet = {"a","abc",1,1.1}
print("集合的初始状态:")
print(aSet)
# 向集合内添加集合型
bSet = {"b","c"}
aSet.add(bSet)
print("集合添加集合型后的状态:")
print(aSet)
结果截图:
增长集合-集合内置方法 update() 原理:将括号内的可迭代对象(可以多个)添加到集合 set 中
集合名.update(可迭代对象1,可迭代对象2):将括号内的可迭代对象(可以多个)添加到集合 set 中,如果对象已存在,则不进行任何操作。集合的内置方法 update() 可以接收多个参数。可迭代对象:列表 list 、元组 tuple 、字典 dict 、集合 set 、字符串 string 。
不能增长集合-集合内置方法 update() 添加已存在对象
上机代码:
# 集合 set 内置方法 update() 添加已存在对象训练
aSet = {"a","b","abc",1,1.1}
print("集合的初始状态:")
print(aSet)
# 向集合内添加已存在对象
aSet.update("a","b")
print("集合添加后的状态:")
print(aSet)
结果截图:
由于集合是不重复的元素合集,所以集合 set 的内置方法 update 添加重复元素不能增长集合。
增长集合-集合内置方法 update() 添加已存在对象:多个字符的字符串
由于集合 set 的内置方法 update() 添加的是可迭代对象,括号内的参数会被遍历后添加入集合 set ,所以多个字符组成的字符串会被遍历拆分为单个字符组成的字符串加入集合。注意由于集合的元素是不重复的,所以重复的单个字符的字符串不能添加入集合。
上机代码:
# 集合 set 内置方法 update() 添加多个字符字符串训练
aSet = {"a","b","abc",1,1.1}
print("集合的初始状态:")
print(aSet)
"""
向集合内添加已存在对象"a",不能加入。
对象"abcde",会被拆分成"a","b","c","d","e",
"a","b","c"集合中已经存在不能加入,"d","e"可以加入。
"""
aSet.update("a","abcde")
print("集合添加后的状态:")
print(aSet)
结果截图:
集合 set 添加后的结果可以看出集合是无序的。
增长集合-集合内置方法 update() 添加可迭代对象:列表、元组、字典、集合
上机代码:
# 集合 set 内置方法 update() 训练
aSet = {"a","b","abc",1,1.1}
print("集合的初始状态:")
print(aSet)
# update() 列表
aSet.update(["c",0],[1.2])
print('\nupdate(["c",0],[1.2]) 列表后的状态:')
print(aSet)
# update() 元组
aSet.update(("e",2,3.3),("f",1.11))
print('\nupdate(("e",2),("f",1.11)) 元组后的状态:')
print(aSet)
# update() 字典
aSet.update({"q":"qq","s":"ss"},{"sss":"ssssss"})
print('\nupdate({"q":"qq","s":"ss"}) 字典后的状态:')
print(aSet)
print('字典的值"qq"、"ss"、"ssssss"}没有加入集合,字典的键加入了集合。')
结果截图:
不能增长集合-集合内置方法 update() 添加可不可迭代对象:整型、浮点型
集合的内置方法 update() 添加不可迭代对象整型上机代码:
# 集合 set 内置方法 update() 训练
aSet = {"a","b","abc",1,1.1}
print("集合的初始状态:")
print(aSet)
# update() 整型
aSet.update(3)
print('\nupdate(3) 整型后的状态:')
print(aSet)
结果截图:
集合的内置方法 update() 添加不可迭代对象浮点型上机代码:
# 集合 set 内置方法 update() 训练
aSet = {"a","b","abc",1,1.1}
print("集合的初始状态:")
print(aSet)
# update() 浮点
aSet.update(3.33)
print('\nupdate(3.33) 浮点型后的状态:')
print(aSet)
结果截图:
add和update的区别
Python3集合 set 内置方法add和update的区别
内置方法名称 | add() | upadte() |
括号内可接收参数的数量 | 1个 | 多个,参数之间用逗号 , 分隔。 |
可接收参数类型 | 可哈希(不可变)类型:整型、浮点型、字符串、元组。 | 可迭代(iterable)类型:字符串、列表、元组、字典、集合。【不可接收:整型、浮点型】 |
【更新中】