Python学习笔记:集合(set)基本内容

1.创建集合。


集合是无序的,元素不重复的一种序列。


set() 创建,集合可变。

>>> s = set('abcdef')
>>> s
{'d', 'c', 'b', 'a', 'e', 'f'}
>>> type(s)
<class 'set'>

frozenset() 创建是不可变的集合,存在哈希值,可以做字典的key。

>>> s = frozenset('abcdef')
>>> s
frozenset({'d', 'c', 'b', 'a', 'e', 'f'})
>>> type(s)
<class 'frozenset'>

>>> s = set('a')
>>> s
{'a'}
>>> D = {s:1}  <span style="white-space:pre">			</span>#错误
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    D = {s:1}
TypeError: unhashable type: 'set'
>>> s = frozenset('a')
>>> s
frozenset({'a'})
>>> D = {s:1}<span style="white-space:pre">			</span>#正确
>>> D
{frozenset({'a'}): 1}


不管是set还是frozenset都无法创建一个整数集合。

>>> s = set(1)<span style="white-space:pre">			</span>#错误
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    s = set(1)
TypeError: 'int' object is not iterable
>>> s = set('1')<span style="white-space:pre">		</span>#正确
>>> s
{'1'}



2.访问集合。

因为集合是无序的可哈希的值,所以不能使用索引值访问集合,可以用循环遍历集合。

>>> s = set('abcdef')
>>> s
{'d', 'c', 'b', 'a', 'e', 'f'}
>>> for i in s:
	print(i)

d
c
b
a
e
f


3.更新集合。

可以用函数来添加集合成员,或者删除集合成员。

添加

add() 

>>> s = set('abc')
>>> s
{'b', 'c', 'a'}
>>> s.add('d')
>>> s
{'d', 'b', 'c', 'a'}


update()

>>> s = set('abc')
>>> s
{'a', 'b', 'c'}
>>> s.update('de')
>>> s
{'e', 'd', 'a', 'b', 'c'}

添加重复元素无变化。

>>> s = set('abc')
>>> s
{'a', 'b', 'c'}
>>> s.add('a')
>>> s
{'a', 'b', 'c'}
>>> s.update('a')
>>> s
{'a', 'b', 'c'}



删除

remove() 只能删除单个元素。

>>> s = set('abc')
>>> s
{'a', 'b', 'c'}
>>> s.remove('a')
>>> s
{'b', 'c'}


del  删除整个集合

>>> s = set('abc')
>>> s
{'a', 'b', 'c'}
>>> del s
>>> s
Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    s
NameError: name 's' is not defined


frozenset() 创建的不可变。



4.操作符

in

>>> s = set('abc')
>>> s
{'a', 'b', 'c'}
>>> 'a' in s
True
>>> 'e' in s
False


not in

>>> s = set('abc')
>>> s
{'a', 'b', 'c'}
>>> 'a' not in s
False
>>> 'e' not in s
True


> < ==

>>> s1 = set('a')
>>> s2 = set('abc')
>>> s1
{'a'}
>>> s2
{'a', 'b', 'c'}
>>> s1 < s2
True
>>> s1 > s2
False
>>> s1 == s2
False


 |  取两个集合的并集

>>> s1 = set('123')
>>> s2 = set('abc')
>>> s1
{'2', '1', '3'}
>>> s2
{'a', 'b', 'c'}
>>> s1 | s2
{'2', '3', 'c', '1', 'a', 'b'}


& 取两个集合的交集

>>> s1 = set('aaa123')
>>> s2 = set('aaa456')
>>> s1
{'3', '2', '1', 'a'}
>>> s2
{'5', 'a', '4', '6'}
>>> s1 & s2
{'a'}

^ 取两个集合的异或元素(只在一个集合中存在的元素)

>>> s1 = set('aaa123')
>>> s2 = set('aaa456')
>>> s1
{'3', '2', '1', 'a'}
>>> s2
{'5', 'a', '4', '6'}
>>> s1 ^ s2
{'4', '2', '5', '3', '6', '1'}

-  取两个集合的差补(指一个有另一个没有的元素)

>>> s1 = set('abc')
>>> s2 = set('a')
>>> s1
{'a', 'b', 'c'}
>>> s2
{'a'}
>>> s1 - s2
{'b', 'c'}
>>> s2 - s1
set()

|= 取两个集合的并集赋值给第一个集合。

>>> s1 = set('a')
>>> s2 = set('1')
>>> s1
{'a'}
s
>>> 2
2
>>> s1 |= s2
>>> s1
{'1', 'a'}
>>> s2
{'1'}

&= 取两个集合的交集赋值给第一个集合。

>>> s1 = set('aaa123')
>>> s2 = set('aaa456')
>>> s1
{'3', '2', '1', 'a'}
>>> s2
{'5', 'a', '4', '6'}
>>> s1 &= s2
>>> s1
{'a'}
>>> s2
{'5', 'a', '4', '6'}

-= 去两个集合的差补赋值给第一个集合

>>> s1 = set('a123')
>>> s2 = set('a')
>>> s1
{'3', '2', '1', 'a'}
>>> s2
{'a'}
>>> s1 -= s2
>>> s1
{'3', '2', '1'}
>>> s2
{'a'}

^=  取两个集合的异或赋值给第一个集合

>>> s1 = set('abc111')
>>> s2 = set('def111')
>>> s1
{'1', 'a', 'b', 'c'}
>>> s2
{'d', 'f', '1', 'e'}
>>> s1 ^= s2
>>> s1
{'d', 'f', 'e', 'c', 'a', 'b'}
>>> s2
{'d', 'f', '1', 'e'}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值