python-集合(set)及操作

set:集合可变的、无序的、不重复的元素的集合,元素不可索引

初始化

s = set()
s = set(iterable) #嵌套可迭代对象
set内的元素必须可以hash

s1 = set()
s2 = set(range(5))
s3 = set(list(range(10)))
s4 = {}#该初始化为字典
s5 = {9,10,11}#set
s6 = {(1,2),3,'a'}
s7 = {[1],(1,),1}#报错,因为包含不可哈希的元素:list

元素增加

1.add(xxx),增加一个元素到set中,若元素已存在则不做任何操作

s = {1,2,3}
s.add(1)#元素已存在
print('s:',s)
s.add('abc')#元素不存在
print('s:',s)
#输出
s: {1, 2, 3}
s: {1, 2, 3, 'abc'}

2.update(*others),合并其他元素到集合中,其中others必须为可迭代对象

#实例一
s1 = {1,2,3}
s1.update(range(5),range(6,9))#set自动去重
print('s1:',s1)
实例二
s2 = {1,2,3}
s2.update('abc')#对每一个字符串进行迭代,增加了三个
print('s2:',s2)
#实例一
s1: {0, 1, 2, 3, 4, 6, 7, 8}
#实例二
s2: {1, 2, 3, 'b', 'c', 'a'}

元素删除

1.remove(xxx),从set中移除一个元素,若不存在抛出KeyError异常
2.discard(xxx),从set中移除一个元素,若不存在不做任何操作
3.pop(),不可以加入参数,因为set无序不可索引,所以不可指定索引
4.clear(),清空集合

成员运算符

set可以进行遍历
可以使用in和not in判断元素是否在set中

集合运算

1.union(*others),将多个集合的元素合并在一起,等同于|,返回新集合

#实例一
x = {"apple", "banana", "cherry"}
y = {"google", "runoob", "apple"}
z = x.union(y)#可写为z = x|y
print('z:',z)

#实例二
a = {"a", "b", "c"}
b = {"f", "d", "a"}
c = {"c", "d", "e"}
result = a.union(b, c)#可写为:result = a|b|c
print('result:',result)
#输出
z: {'runoob', 'google', 'apple', 'cherry', 'banana'}
result: {'d', 'c', 'a', 'e', 'b', 'f'}

2.intersection(*others),求元素的并集,等同于&,返回多个集合的交集

#实例一
x = {"apple", "banana", "cherry"}
y = {"google", "runoob", "apple"}
z = x.intersection(y)#可写为z = x&y
print('z:',z)

#实例二
a = {"a", "b", "c"}
b = {"f", "d", "a"}
c = {"c", "d", "e"}
result = a.intersection(b, c)#可写为:result = a&b&c
print('result:',result)
#输出
z: {'apple'}
result: set()#交集为空,返回空集合

3.difference(*others),求集合的差集,等同于-,返回和多个集合的差集

#实例一
x = {"apple", "banana", "cherry"}
y = {"google", "runoob", "apple"}
z = x.difference(y)#可写为z = x-y
print('z:',z)

#实例二
a = {"a", "b", "c"}
b = {"f", "d", "a"}
c = {"c", "d", "e"}
result = a.difference(b, c)#可写为:result = a-b-c
print('result:',result)
#输出
z: {'banana', 'cherry'}
result: {'b'}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值