set对象的创建和使用

2020年5月10日 / 95次阅读 / Last Modified 2020年10月17日
Set

本文简单总结一下python处理集合时常用的set对象,set对象中的内容是不重复的无序集合。

按照python官方教材的说法,set对象的基本使用场景是 membership testing and eliminating duplicate entries ,同时支持集合的 mathematical operations like union, intersection, difference, and symmetric difference.

创建set对象,可以使用set函数,或者大括号{},使用大括号时,内容不能为空,否则就是在创建dict对象。set函数可以输入一个iterable对象,用来提供set对象的内容。

>>> a = set()
>>> a
set()
>>> b = set('abcde')
>>> b
{'e', 'd', 'a', 'b', 'c'}
>>> c = {'abcde'}
>>> c
{'abcde'}
>>> d = {1,2,3,4,5,6}
>>> d
{1, 2, 3, 4, 5, 6}
>>> len(a)
0
>>> len(b)
5
>>> len(c)
1
>>> len(d)
6
>>> f = set([1,2,3,4,5])
>>> f
{1, 2, 3, 4, 5}

membership testing使用经典的in关键词:

>>> 'a' in b
True
>>> 'gg' in b
False

set对象属于mutable,我们可以用add成员函数来增加set对象中的元素,不过如果增加重复元素,对set对象就无效了:

>>> f = set([1,2,3,4,5,6,7,8,9])
>>> id(f)
1749469866024
>>> f.add(999)
>>> f
{1, 2, 3, 4, 5, 6, 7, 8, 9, 999}
>>> id(f)
1749469866024
>>> f.remove(5)
>>> f
{1, 2, 3, 4, 6, 7, 8, 9, 999}
>>> id(f)
1749469866024
>>> f.add(999)
>>> f.add(999)
>>> f.add(999)
>>> f
{1, 2, 3, 4, 6, 7, 8, 9, 999}

set对象最特别的应用,就是集合计算,下面这段是来自python官方的示例,我觉得作为基本知识很nice:

>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a                                  # unique letters in a
{'a', 'r', 'b', 'c', 'd'}
>>> a - b                              # letters in a but not in b
{'r', 'd', 'b'}
>>> a | b                              # letters in a or b or both
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b                              # letters in both a and b
{'a', 'c'}
>>> a ^ b                              # letters in a or b but not both
{'r', 'd', 'b', 'm', 'z', 'l'}

如何遍历set对象:

>>> f
{1, 2, 3, 4, 6, 7, 8, 9, 999}
>>> for it in f:
...     print(it)
...
1
2
3
4
6
7
8
9
999
>>> f.add(0)
>>> for it in f:
...     print(it)
...
0
1
2
3
4
6
7
8
9
999

set对象是是一个集合,无序的,我们增加一个元素后,并不能确定这个元素在遍历的时候,出现在什么时候。set对象的实现,肯定对内部元素有一种排序方式,不过对于使用set对象而言,这种内部的排序方式不需要知道,也是不可靠的依据,我们只需要知道无序即可。

set对象用来去重(去掉重复元素)是常用的操作,只需一行代码即可搞定:

>>> a = [1,1,2,2,3,3,4,4,5,5]
>>> a
[1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
>>> a = list(set(a))
>>> a
[1, 2, 3, 4, 5]
>>>
>>> b = (1,1,2,2,3,3,4,4,5,5)
>>> b
(1, 1, 2, 2, 3, 3, 4, 4, 5, 5)
>>> b = tuple(set(b))
>>> b
(1, 2, 3, 4, 5)

-- EOF --

本文链接:https://www.pynote.net/archives/1897

留言区

电子邮件地址不会被公开。 必填项已用*标注


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top