Python学习笔记08-集合

什么是集合

集合 set 是一个无序不重复元素的序列。

setdict 类似,也是一组 key 的集合,但不存储 value。由于 key 不能重复,所以,在 set 中,没有重复的 key

在 python 中,使用大括号 {} 或者 set() 来创建集合。

注意: 创建一个空集合必须使用 set() 而不能使用 {},因为 {} 是用来创建一个空字典的。

>>> s = {1, 2.33, False, 'aa', 'bb', 'aa'}
>>> s
{False, 1, 2.33, 'bb', 'aa'}
>>> ss = set('hello')
>>> ss
{'o', 'e', 'h', 'l'}

添加元素

使用 add 方法:

>>> s = {1, 2, 3}
>>> s
{1, 2, 3} 
>>> s.add(1)    #如果元素已存在,则不进行任何操作
>>> s
{1, 2, 3}
>>> s.add(4)
>>> s
{1, 2, 3, 4}

set 和 dict 的唯一区别仅在于没有存储对应的 value。但是,set 的原理和 dict 一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证 set 内部 “不会有重复元素”。

试试把 list 放入 set,看看是否会报错:

>>> s.add(['a', 'b'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

使用 update 方法也可以添加元素,且参数可以是列表、元组、字典、集合等:

>>> s
{1, 2, 3, 4}
>>> s.update([11,22])   #添加列表
>>> s
{1, 2, 3, 4, 11, 22}
>>> s.update((33, 44))  #添加元组
>>> s
{1, 2, 3, 4, 33, 11, 44, 22}
>>> s.update({'name':'maratrix'})   #添加字典
>>> s
{1, 2, 3, 4, 33, 11, 44, 22, 'name'}
>>> s.update({'hello', 'world'})    #添加集合
>>> s
{1, 2, 3, 4, 33, 'world', 11, 44, 'hello', 22, 'name'}
>>> s.update([5,6], (7,8))  #添加多个参数
>>> s
{1, 2, 3, 4, 33, 'world', 5, 6, 7, 8, 11, 44, 'hello', 22, 'name'}

删除元素

使用 remove 方法,如果元素不存在,则会报错:

>>> s = {1,2,3}
>>> s.remove(1)
>>> s.remove(1) # 元素不存在报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 1

还有一个方法 discard() 也是移除集合中的元素,且如果元素不存在,不会发生错误:

>>> s = {1,2,3}
>>> s.discard(1)
>>> s
{2, 3}
>>> s.discard(1)    #元素不存在也不会报错

使用 pop 方法可以随机删除集合中的一个元素:

>>> s = {1,2}
>>> s.pop()
1
>>> s.pop()
2
>>> s.pop()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'pop from an empty set'

集合为空时候,使用 pop 方法会报错。

计算元素个数

>>> s = {1,2}
>>> len(s)
2

清空集合

>>> s = {1,2}
>>> s.clear()
>>> s
set()

判断元素是否存在

判断元素 s 是否在集合 x 中存在,存在返回 True,不存在返回 False。

>>> s = {1,2}
>>> 1 in s
True
>>> 3 in s
False
发布了47 篇原创文章 · 获赞 9 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/u013958997/article/details/80964832