系列文章目录
第九章 Python 机器学习入门之集合操作
前言
学习集合操作
一、集合操作
集合: set 关键字 无序的不重复的元素
#创建集合一:
s1 = set()#创建空集合,只能使用set()
set函数还有一个用法:
#将一个列表快速去掉重复项,若为数字还会排序,但是会转换成集合的形式
list1=[1,2,3,4,8,7,6,5,7,8,7]
s3=set(list1)#{1, 2, 3, 4, 5, 6, 7, 8}
#创建集合二:
s2 = {1,2,3,4,5}#注意这里不是key:value形式,所以并不是字典类型
#增删改查:
#1.增加add():添加一个元素
s1=set()
s1.add('hello')
s1.add('world')
t1=('小龙女','姑姑')
s1.add(t1)
print(s1)#{'hello', 'world', ('小龙女', '姑姑')}
#1.增加update()
s1=set()
s1.add('hello')
s1.add('world')
t1=('小龙女','姑姑')
s1.update(t1)
print(s1)#{'world', 'hello', '小龙女', '姑姑'}无序
#2.删除 remove pop clear
#remove
s1=set()
s1.add('hello')
s1.add('world')
t1=('小龙女','姑姑')
s1.update(t1)
s1.remove('姑姑')#删除元素不存在时,报错
print(s1)#{'world', '小龙女', 'hello'}无序
#pop:随机删除,但是在集合中,删除第一个元素
s1=set()
s1.add('hello')
s1.add('world')
s1.add('小龙女')
s1.add('姑姑')
print(s1)#{'hello', 'world', '姑姑', '小龙女'}
s1.pop()
print(s1)#{'world', '姑姑', '小龙女'}
#discard
s1=set()
s1.add('hello')
s1.add('world')
s1.add('小龙女')
s1.add('姑姑')
s1.discard('姑姑')#
print(s1)#{'小龙女', 'world', 'hello'}
#clear
s1=set()
s1.add('hello')
s1.add('world')
s1.add('小龙女')
s1.add('姑姑')
s1.clear()#清空
print(s1)#set()
练习①:
1.产生10个1-20的随机数,去除里面的重复项
2.键盘输入一个元素,将此元素从不重复的集合中删除
'''
第一次写的时候会发现有很多bug,比如在 for values in list3 :
这里,list3是列表形式,因为我用list3 = list(list2)转换了
因为在for values in list3 中list3不能够是字典类型,或者说是{}类型。
'''
import random
list1=[]
i=0
while i<10 :
ran = random.randint(1,20)
list1.append(ran)
i+=1
print(list1)
list2 = set(list1)
list3 = list(list2)
print(list2)
print(list3)
while True:
value = int(input('请输入一个元素,将元素从不重复的集合中删除。'))
for values in list3 :
if values == value :
list2.remove(value)
print(list2)
二、集合符号操作
'''
在集合类型中是不支持(+,*)符号的。
'''
set1={1,2,3,4,5}
set2={1,2,3,4,5,6}
1.等于符号==
print(set1==set2)#False
2.差集运算
2.1方法一: '-'
set3=set1-set2#差集
print(set3)#6{6}
2.2方法二:'difference()':找两者中不同的地方。
set4=set1.difference(set2)#差集
print(set4)#6{6}
3.交集运算
3.1 方式一: '&'
set5=set1 & set2
print(set5)
3.2 方式二: 'intersection()'
set6=set1.intersection(set2)
4.并集运算
5.1 方式一: '|'
set7=set1 | set2
print(set5)
5.2 方式二: 'union()'
set8=set1.union(set2)
5.内置函数
5.1 intersection_update() 交集并赋值
5.2 union_update() 并集并赋值
5.3 symmetric_difference_update() 对称差集并赋值
6.练习
'''
已知两个列表:
l1 = [2,4,5,22,0]
l2 = [2,3,1,5,0]
1.找出两个列表的不同元素
'''
解:
s1=set(l1)
s2=set(l2)
T1:
方式一:
result1 = (s1|s2)-(s1&s2)
方式二:
result1=set1^set2#列表中不同的元素
方式三:
result1=set1.symmetric_difference(set2)
三、可变与不可变类型
'''
一.不可变:对象所指向的内存中的值是不可以改变的
不可变类型:int str float 元组tuple
'''
#举例:
num=10
s1='abc'
print(id(s1))
s1='abcd'
print(id(s1))
会发现id值都不一样。这就是不可变
'''
二.可变的:对象所执行的内存中的值都可变的。
可变类型:字典dict 列表list
'''
#举例:
list1=[1,2,3,4,5]
print(list1,id(list1))
list1.pop()
print(list1,id(list1))
dict1 = {1:'a',2:'b'}
print(dict1,id(dict1))
dict1.pop(1)
print(dict1,id(dict1))
内容改变了但是地址并没有改变。
四、类型转换
str()----->int() ,float()字符型转整形,浮点型
s='6'
i=int(s)
str()----->list(),tuple(),set() 字符型转列表,转元组,转集合
s='abc'
l=list(s)
print(l) ['a', 'b', 'c']
l=set(l)
print(l) {'b', 'a', 'c'}
l=tuple(s)
print(l) ('a', 'b', 'c')
list()------>set(),tuple(),列表转字典时,需[(key,value)]形式