集合python有相同元素报错_Python集合学习五

@Python集合学习

Python集合定义

集合定义:由不同元素 组成的集合,集合是一组无序排列的可hash的值,可以作为字典的key.

集合中元素必须是不可变的(数字,字符串,元组)

s = set('hello')

print(s)

s1 =set(['alex','alex','sb'])

print(s1)

#输出结果

#{'o', 'l', 'e', 'h'}

#{'alex', 'sb'}

集合内置方法

add()追加元素

s = {1,2,3,4,5,6}

s.add('s')

print(s)

#输出结果

#{1, 2, 3, 4, 5, 6, 's'}

clear(),清楚集合内的yuans

s = {1,2,3,4,5,6}

s.clear()

print(s)

#输出结果

#set()

copy(),复制

s = {1,2,3,4,5,6}

s1 = s.copy()

print(s1)

#输出结果 {1, 2, 3, 4, 5, 6}

#将s里的元素复制到s1中

pop():删除(无序删除),随机删除集合中的一个元素

s = {3,2,4,'s',8}

s.pop()

print(s)

#数据结果 {3, 4, 8, 's'}

remove():删除,指定删除,指定删除一个元素,若指定删除元素不存在集合中则会报错

s = {3,2,4,'s',8}

s.remove(4)

print(s)

#输出结果:{2, 3, 8, 's'}

discard():指定删除,和上面不同的是,删除元素不存在,则不会报错

s = {3,2,4,'s',8}

s.discard(4)

s1 = s.discard('A')

print(s)

print(s1)

#输出结果 : {2, 3, 8, 's'} None

1打印出相同部分

方法一:用列表的方式来求相同部分

s1 = ['sk','xbk','bba','jeep']

s2 = ['jeep','sk',123,'aaa']

s3 = []

for p_name in s1:

if p_name in s2:

s3.append(p_name)

print(s3)

#输出结果:['sk', 'jeep']

方法二:使用集方法求相同部分

intersection() 方法用于返回两个或更多集合中都包含的元素,即交集

intersection() 方法语句:set.intersection(set1, set2 … etc)

set1 – 必需,要查找相同元素的集合

set2 – 可选,其他要查找相同元素的集合,可以多个,多个使用逗号 , 隔开

如下

s1 = ['sk','xbk','bba','jeep']

s2 = ['jeep','sk',123,'aaa']

s1_set = set(s1)

s2_set = set(s2)

print(s1_set.intersection(s2_set))

print(s1_set&s2_set)

#输出结果都是:['sk', 'jeep']

x = {"a", "b", "c"}

y = {"c", "d", "e"}

z = {"f", "g", "c"}

result = x.intersection(y, z)

print(result)

#输出结果: {'c'}

union() 求并集

s1 = ['sk','xbk','bba','jeep']

s2 = ['jeep','sk',123,'aaa']

s1_set = set(s1)

s2_set = set(s2)

print(s1_set.union(s2_set))

print(s1_set|s2_set)

输出结果

{'xbk', 'aaa', 'jeep', 'sk', 123, 'bba'}

{'xbk', 'aaa', 'jeep', 'sk', 123, 'bba'}

difference():求差集

s1 = ['sk','xbk','bba','jeep']

s2 = ['jeep','sk',123,'aaa']

s1_set = set(s1)

s2_set = set(s2)

print(s1_set.difference(s2_set))

print(s1_set-s2_set)

输出结果

{'bba', 'xbk'}

{'bba', 'xbk'}

symmetric_difference:集合交叉补集

s1 = ['sk','xbk','bba','jeep']

s2 = ['jeep','sk',123,'aaa']

s1_set = set(s1)

s2_set = set(s2)

print(s1_set.symmetric_difference(s2_set))

print(s1_set^s2_set)

输出结果

{'aaa', 'bba', 'xbk', 123}

{'aaa', 'bba', 'xbk', 123}

difference_update(self,s)用于移除两个集合中都存在的元素

s1 = ['sk','xbk','bba','jeep']

s2 = ['jeep','sk',123,'aaa']

s1_set = set(s1)

s2_set = set(s2)

s1_set.difference_update(s2_set)

print(s1_set)

输出结果

{'xbk', 'bba'}

isdisjoint()两个集合的交集为空时返回True

s1 = {1,2}

s2 = {3,4}

print(s1.isdisjoint(s2))

#输出结果:True

issubset():用于判断集合的所有元素是否都包含在指定集合中,如果是则返回 True,否则返回 False。

s1 = {1,2}

s2 = {1,2,3,4}

print(s1.issubset(s2))

#输出结果为 True

s1 = {1,2,9}

s2 = {1,2,3,4}

print(s1.issubset(s2))

#输出结果:False

issuperset():判断指定集合的所有元素是否都包含在原始的集合中,如果是返回True否则返回False.和issubset()类似

update():将集合A的里的元素更新到集合B中,更新多个值

s1={1,2,9}

s2={1,2,3,4}

s1.update(s2)

print(s1)

#输出结果:{1, 2, 3, 4, 9}

frozenset():是冻结的集合,它是不可变的,存在哈希值,好处是它可以作为字典的key,也可以作为其它集合的元素。缺点是一旦创建便不能更改,没有add,remove方法

s=frozenset('hello')

print(s)

输出结果

frozenset({'h', 'l', 'e', 'o'})

集合也可以对列表中的元素进行去重,原理是将列表中重复元素使用集合去重后再转换为列表 如下

names=['AAA','AAA','XXXX']

names=list(set(names))

print(names)

输出结果

['AAA', 'XXXX']

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值