Python 之集合操作,内置函数

系列文章目录

第九章 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)]形式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值