set()函数——将可迭代对象转换为可变集合
文章目录
1.语法要点
可迭代对象:字符串、元组、列表、字典、集合。
不可迭代对象:整数、浮点数。
2.实操练习
(1)创建空集合
# set函数不传入参数,创建一个空集合
set_1 = set ( )
print('空集合',set_1)
【终端输出】
空集合 set()
# 新建空列表
list_0 = [ ]
# 新建空元组
tuple_0 = ( )
# 新建空字典
dict_0 = { }
# type函数查看数据类型
print(type(list_0))
print(type(tuple_0))
print(type(dict_0))
【终端输出】
<class 'list'>
<class 'tuple'>
<class 'dict'>
# 新建空列表
list_0 = list()
# 新建空元组
tuple_0 = tuple( )
# 新建空字典
dict_0 = dict( )
# 新建空集合
set_0 =set( )
# type函数查看数据类型
print(type(list_0))
print(type(tuple_0))
print(type(dict_0))
print(type(set_0))
【终端输出】
<class 'list'>
<class 'tuple'>
<class 'dict'>
<class 'set'>
空列表、元组、字典的创建都有两种方式,但空集合的创建方式只有一种。
创建空集合只能用set函数,不能用{},{}创建的是空字典。
(2)将字符串转换为集合
set_1 = set ('happy')
print('将字符串转换为集合:',set_1)
【终端输出】
将字符串转换为集合: {'p', 'h', 'a', 'y'}
用set()函数将字符串转换为集合。
集合的元素是不能重复的,因此p字符只保留1个。
(3)将列表转换为集合
set_2 = set (['张三','李四','王五'])
print(' 将列表转换为集合:',set_2)
【终端输出】
将列表转换为集合: {'张三', '李四', '王五'}
(4)将元组转换为集合
set_3 = set (('张三','李四','王五'))
print(' 将元组转换为集合:',set_3)
【终端输出】
将元组转换为集合: {'张三', '李四', '王五'}
(5)将字典转换为集合
# 字典也用{}表示
dict_1 = {
'name':'Lily',
'age':'20',
'sex':'female'
}
set_4 =set(dict_1)
print('将字典转换为集合',set_4)
【终端输出】
将字典转换为集合 {'age', 'name', 'sex'}
set()函数仅作用于字典的键(key),输出的集合只含字典的键(key)。
字典的键:‘name’, ‘age’, ‘sex’
字典的值:‘Lily’, ‘20’, ‘female’
(6)将集合转换为集合
set_5 = set ({'张三','李四','王五'})
print(' 将集合转换为集合:',set_5)
【终端输出】
将集合转换为集合: {'张三', '李四', '王五'}
(7)将range对象转换为集合
set_6 = set (range(7))
print(' 将range对象转换为集合:',set_6)
【终端输出】
将range对象转换为集合: {0, 1, 2, 3, 4, 5, 6}
(8)不能将整数转换为集合
set_2 = set(77520)
print('不能将整数转换为集合:',set_2)
【终端输出】
TypeError: 'int' object is not iterable
‘int’ object is not iterable:“int”对象不可迭代。
(9)不能将浮点数转换为集合
set_2 = set(77.520)
print('不能将浮点数转换为集合:',set_2)
【终端输出】
TypeError: 'float' object is not iterable
‘float’ object is not iterable:“float”对象不可迭代。
(10)set()函数的参数只能有一个
set_1 = set ('人数苦短','我学Python')
print('多个字符串不能转换为集合:',set_1)
【终端输出】
TypeError: set expected at most 1 argument, got 2
set expected at most 1 argument, got 2:集合预期最多1个参数,但得到2个。
3.知识回顾
(1)random库知识
# 导入库
import random
# 模块.randint(下限,上限)
# 随机生成一个1到10的数,包含1和10
print(random.randint(1,10))
【终端输出】
9
每点一次运行,得到的数可能都是不一样的。
但都在1和10之间。
random [ˈrændəm]:任意的,任意选取的。
random是Python的内置库,不需要安装,直接导入就能使用。
random库的作用是生成一个随机数。
random.randint(a, b):作用是生成一个指定范围内的整数。
随机生成一个a到b的数,包含a和b。
a <= 随机数 <= b。
(2)for循环和range函数
for i in range(0,4) :
print(i)
【终端输出】
0
1
2
3
for循环和range函数搭配使用可以控制循环的次数。
range函数含前不含后。
range函数含0不含4,所以输出结果没有4。
(3)append()方法——添加列表元素
# 新建列表
list_1 = ['赵','钱','孙','李']
# 列表名.append(要添加的元素)
list_1.append('王二麻子')
# 查看添加元素后的列表
print(list_1)
【终端输出】
['赵', '钱', '孙', '李', '王二麻子']
4.综合练习
去掉随机数中的重复数字
# 导入库
import random
# 新建一个空列表用于存储随机数
list_0 = []
# 用for和range控制循环次数:
# (0,10) 表示循环次数为10次
for i in range(0,10) :
# 将每次随机生成的数字添加到列表中
list_0.append(random.randint(1,10))
# 用set函数将列表转换为集合
# 集合名= set(要转换的对象)
set_1 = set(list_0)
print('10次提取随机数组成的列表:',list_0)
print('去掉重复数字的集合为:',set_1)
# len函数查看列表、集合的元素个数
print('列表元素个数',len(list_0))
print('集合元素个数',len(set_1))
【终端输出】
随机后的列表: [6, 4, 2, 1, 1, 4, 2, 5, 9, 1]
取掉重复数字的集合: {1, 2, 4, 5, 6, 9}
列表元素个数 10
集合元素个数 6
for循环10次,生成了10个随机数,因此列表的元素个数永远都为10。
集合的元素个数是不固定的。
每次生成的列表元素值不一样,去掉的重复元素个数就不一定,因此集合的元素个数也不一定。
大家多点击几次运行,查看输出结果。