Lesson 13
在Python中,数据结构形式有很多,包括:Set、List、Tuple和Dictionary。本节详细介绍一下Set,我们先新建一个set集合,用dir()得到它能使用的函数。
1 | example = set() |
['__and__',
'__class__',
'__contains__',
'__delattr__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__gt__',
'__hash__',
'__iand__',
'__init__',
'__init_subclass__',
'__ior__',
'__isub__',
'__iter__',
'__ixor__',
'__le__',
'__len__',
'__lt__',
'__ne__',
'__new__',
'__or__',
'__rand__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__ror__',
'__rsub__',
'__rxor__',
'__setattr__',
'__sizeof__',
'__str__',
'__sub__',
'__subclasshook__',
'__xor__',
'add',
'clear',
'copy',
'difference',
'difference_update',
'discard',
'intersection',
'intersection_update',
'isdisjoint',
'issubset',
'issuperset',
'pop',
'remove',
'symmetric_difference',
'symmetric_difference_update',
'union',
'update']
我们首先尝试给set增加一个元素,从dir中,可以找到具有该功能的add()函数。
1 | help(example.add) # get help from API document |
Help on built-in function add:
add(...) method of builtins.set instance
Add an element to a set.
This has no effect if the element is already present.
从文档我们得知,add()函数可以给set增加一个元素,不管这个元素是否出现过,意思就是说:如果增加的这个元素set里有,不会报错。我们尝试给example增加各种类型的元素:
1 | example.add(42) |
{False, 42, 3.1415926, 'String'}
set的每一个成分被称为element(元素),每个元素可以是任意类型的数据。
下面讲一个set与其他数据结构不同的地方:
1 | example.add(42) |
{False, 42, 3.1415926, 'String'}
由这个例子可以得到,set在增加元素的时候会做一个交集的操作,增加的元素如果set里有就不加了。我们也可以用len()函数看一下set此时的长度,证明一下:
1 | len(example) |
4
与增加相对应的是去除,set可以使用remove()进行操作:
1 | help(example.remove) |
Help on built-in function remove:
remove(...) method of builtins.set instance
Remove an element from a set; it must be a member.
If the element is not a member, raise a KeyError.
意思就是说去除set中的一个元素,但是给的变量一定要是set中存在的,否则报错。
1 | example.remove(42) |
3
1 | example |
{3.1415926, False, 'String'}
下面介绍另一个去除元素的函数discard:
1 | help(example.discard) |
Help on built-in function discard:
discard(...) method of builtins.set instance
Remove an element from a set if it is a member.
If the element is not a member, do nothing.
从文档介绍我们可以找出不同,discard函数在遇到给定变量不是set中元素的时候,不会报错。
1 | example.discard(50) # 50 is not in example |
{3.1415926, False, 'String'}
讲到这里,再介绍两个快速建立set和快速清空set的方法:
1 | example2 = set([23,34.23,'string2',True]) |
到此讲完set增加和删除的全部函数,下面讲一下对set并集[union]交集[intersection]的操作:
1 | # Integers 1 - 10 |
以上就是并集交集的操作,那么如何去判断一个变量是否在set中呢,这个在循环中是经常用到的,python中使用的 in 和 not in :
1 | 2 in primes |
当然,除了以上操作,还有很多需要去发现,用dir()、help() 去探索吧。
Youtube source:
https://www.youtube.com/watch?v=bY6m6_IIN94&list=PLi01XoE8jYohWFPpC17Z-wWhPOSuh8Er-