安迪Python
2022/11/30阅读:40主题:默认主题
40. Python数据类型之集合
40. Python数据类型之集合
1. Python的数据类型
Python中有8种常见的数据类型:

【数据类型数据】
1.字符串:str,用引号括起来的字符。
2.整数:int,没有小数点的数字。
3.浮点数:float,有小数点的数字。
4.布尔类型:bool,只有2个值( True 和 False )。
【容器类型的数据】
5.列表:list,用英文方括号[ ]
存储python8种数据类型中的一种,或任意几种。
6.元组:tuple,用英文圆括号( )
存储python8种数据类型中的一种,或任意几种。
7.字典:dict,用英文大括号{ }
存储多对具有对应关系的数据。
8.集合:set,用英文大括号{ }
存储无序的、不重复的、不可变的数据。
2. 什么是集合
set[set]:集合,一组,一套。
集合是一个可迭代的、无序的、不能包含重复元素的容器类型数据。
3. 集合的特点
-
集合用英文大括号
{ }
表示。 -
集合的元素是无序的。
-
集合的元素是不能重复的。
-
集合的元素只能是不可变数据类型。
-
集合本身是可变的数据类型。
【温馨提示】
集合中的元素不可变。
集合本身可变:即可以添加、删除和清空集合元素。
4. 集合的语法
集合主要由3部分构成:
-
英文大括号 { }
-
集合的元素 -
元素之间用英文逗号 ,
隔开

5. 新建空集合
5.1 用英文大括号{ }
新建的是空字典而不是空集合
用英文中括号[ ]
我们可以创建一个空列表。
用英文圆括号( )
我们可以创建一个空元组。
用英文大括号{ }
我们可以创建一个空字典。
【温馨提示】
字典和集合都用英文大括号{ }
表示,但英文大括号{ }
只能创建空字典不能创建空集合。
# 新建一个空列表
none_list = [ ]
# 新建一个空元组
none_tuple = ( )
# 新建一个空字典
none_dict ={ }
# type函数查看数据类型
print(type(none_list))
print(type(none_tuple))
print(type(none_dict))
【终端输出】
<class 'list'>
<class 'tuple'>
<class 'dict'>
none[nʌn]:无,没有,默认值。
5.2 用set函数创建一个空集合
# 新建一个空集合
none_set = set( )
# type函数查看数据类型
print(type(none_set))
【终端输出】
<class 'set'>
【代码解析】
-
none_set
是我给空集合起的名字。 -
=
是赋值符号。 -
set
是函数名。 -
函数名
set
后紧跟一个英文圆括号( )
。
6.创建集合
创建非空集合通常有2种方式:
方法1:在英文大括号{ }
直接添加元素。
方法2:用set函数将可迭代对象转换为集合。
6.1 创建元素为字符串的集合
# 元素为字符串的集合
set_1 = {'a','a','a','a'}
print('元素为字符串的集合',set_1)
【终端输出】
元素为字符串的集合 {'a'}
【代码解析】
上述集合的元素类型均为字符串。
字符串是不可变数据类型。
创建集合时虽然在英文大括号中{ }
中增加了4个字符串'a'
,但集合的元素是不能重复的,因此输出结果只保留了1个字符串'a'
。
6.2 创建元素为整数的集合
# 元素为整数的集合
set_2 = {1, 3, 9, 9, 9, 9}
print('元素为整数的集合',set_2)
【终端输出】
元素为整数的集合 {1, 3, 9}
【代码解析】
上述集合的元素类型均为整数。
整数是不可变数据类型。
创建集合时虽然在英文大括号中{ }
中增加了6个整数,但集合的元素是不能重复的,因此输出结果只保留了1个整数9
。
6.3 创建元素为浮点数的集合
# 元素为浮点数的集合
set_3 = {0.5, 1.1, 1.1 ,1.1}
print('元素为浮点数的集合',set_3)
【终端输出】
元素为浮点数的集合 {0.5, 1.1}
【代码解析】
上述集合的元素类型均为浮点数。
浮点数是不可变数据类型。
创建集合时虽然在英文大括号中{ }
中增加了4个浮点数,但集合的元素是不能重复的,因此输出结果只保留了1个浮点数1.1
。
6.4 创建元素为元组的集合
# 元素为元组的集合
# 元组用()表示
set_4 = {('人生苦短', '我用Python'),('人生苦短', '我用Python'),('人生苦短', '我用Python')}
print('元素为元组的集合',set_4)
【终端输出】
元素为元组的集合 {('人生苦短', '我用Python')}
【代码解析】
上述集合的元素类型均为元组。
元组是不可变数据类型。
创建集合时虽然在英文大括号中{ }
中增加了3个相同的元组,但集合的元素是不能重复的,因此输出结果只保留了1个元组。
6.5 创建元素为布尔值的集合
# 元素为布尔值的集合
# 布尔值:True, False
set_5 = {True, False, True, False}
print('元素为布尔值的集合',set_5)
【终端输出】
元素为布尔值的集合 {False, True}
【代码解析】
上述集合的元素类型均为布尔值。
布尔值是不可变数据类型。
创建集合时虽然在英文大括号中{ }
中增加了4个布尔值,但集合的元素是不能重复的,因此输出结果只保留了2个布尔值。
6.6 集合的元素不能是列表
# 元素为列表的集合
# 列表用[]表示
set_6 = {['张三','李四','张三']}
print('元素为列表的集合',set_6)
【终端输出】
TypeError: unhashable type: 'list'
【代码解析】
集合的元素为列表,列表是可变数据类型,程序报错。
unhashable type: 'list':不可哈希的类型:“列表”。
6.7 集合的元素不能是字典
# 元素为字典的集合
# 字典也用{}表示
dict_1 = {
'name':'Andy',
'age':'20',
'sex':'female'
}
set_7 = {dict_1}
print('元素为字典的集合',set_7)
【终端输出】
TypeError: unhashable type: 'dict'
【代码解析】
集合的元素为字典,字典是可变数据类型,程序报错。
unhashable type: 'dict':不可哈希的类型:“字典”。
6.8 集合的元素不能是集合
# 元素为集合的集合
# 集合用{}表示
set_8 = {{'a','b'}}
print('元素为集合的集合',set_8)
【终端输出】
TypeError: unhashable type: 'set'
集合的元素为集合,集合是可变数据类型,程序报错。
unhashable type: 'set':不可哈希的类型:“set”。
6.9. 创建包含多种数据类型的集合
# 集合的元素含有多种数据类型
set_9 = {'a','b',True, 2, 9.9 , 9.9 }
print('元素为多种数据的集合',set_9)
【终端输出】
元素为多种数据的集合 {True, 2, 'b', 9.9, 'a'}
【温馨提示】
集合是无序的:点击运行后输出的集合元素顺序与我们创建集合的元素顺序可能不同。
6.10 用set函数将可迭代对象转换为集合
这个知识点单独写一节。
7. 集合的元素只能是不可变数据类型
不可变数据类型:
-
字符串
-
整数
-
浮点数
-
元组
-
布尔类型
可变数据类型:
-
列表
-
字典
-
集合

8. 总结

作者介绍