拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Python学习---DAY17集合

Python学习---DAY17集合

可变集合set

特点:可存储字符/数字/元组/不可变集合等不能改变的内容,且内容可以增删改查,但内容存入后会变的无序且不重复

a={1,9,18,4,5,5,6,'a','c',6,(3,2,7)} print(a) #{1, 'a', 4, 5, 6, 9, 18, (3, 2, 7), 'c'}

数据类型为set,定义时,使用函数set(),接收返回值即可

不可变集合frozenset

特点:与set相比,不可以增删改

通过frozenset()函数将集合改变为不可变集合并返回

如:

a={1,9,18,4,5,'a','c',6} b=frozenset(a) print(b) #frozenset({1, 4, 5, 6, 9, 'c', 18, 'a'})

集合必须储存不可变元素的原因:集合定位需要使用元素的哈希值而不是下标,所以若元素能被改变,就不能被定位

集合操作

增:

add方法:向集合中添加元素

例:

a={1,9,18,4,5,5,6,'a','c',6,(3,2,7)} print(a) a.add(64) print(a) #{1, 'c', 'a', 4, 5, 6, 9, 18, (3, 2, 7)} #{64, 1, 'c', 'a', 4, 5, 6, 9, 18, (3, 2, 7)}

update方法:向集合中批量添加元素

例:

a={1,9,18,4,5,5,6,'a','c',6,(3,2,7)} a.update([2,'h',(3,2,8)]) print(a) #{1, 'c', 2, 4, 5, 6, 'a', 9, (3, 2, 8), 'h', 18, (3, 2, 7)}
删:

remove方法:删除指定元素(该元素有多少删除多少),若无,则编译报错

例:

a={1, 'a', 5, 5, 4, 6, 'c', 9, 18, (3, 2, 7)} a.remove(5) print(a) #{1, 4, 'a', 6, 9, 'c', 18, (3, 2, 7)}

discard方法:删除指定元素

例:

a={1, 'a', 5, 5, 4, 6, 'c', 9, 18, (3, 2, 7)} a.discard((3,2,7)) print(a) #{1, 4, 5, 6, 9, 'a', 18, 'c'}

pop方法:随机去除一个元素并返回下标

clear方法:清除所有元素

例:

a={1, 'a', 5, 5, 4, 6, 'c', 9, 18, (3, 2, 7)} a.pop() print(a , a.pop()) a.clear() print(a) #{5, 6, 9, 'c', 18, 'a', (3, 2, 7)} 4 #set()
改:

集合无特定修改方法,所以通过增删来实现改

查:

集合无特定查方法,只能通过成员运算符实现

其余方法:

difference方法:查找AB集合差异,并返回差异集合

例:

a={5, 6, 9, 'c', 18, 'a', (3, 2, 7)} b={1,2,3,4,5,5} c=a.difference(b) print(c) #{'a', 6, 9, 18, (3, 2, 7), 'c'}

difference_update方法:将A中的B集合中的元素删除

例:

a={5, 6, 9, 'c', 18, 'a', (3, 2, 7)} b={1,2,3,18,'c',5} a.difference_update(b) print(a) #{6, (3, 2, 7), 'a', 9}

union方法:将两个集合合并,返回一个新集合

例:

a={1,23,4,5,6,(3,4,5),'hello'} b={3.14, 'world'} c=a.union(b) print(c) #{1, 3.14, 4, 5, 6, 'hello', (3, 4, 5), 23, 'world'}

issubset方法:判断B是否为A的子集

issuperset方法:判断B是否为A的超集

isdisjoint方法:判断AB是否存在交集

以上三个方法均返回布尔值

集合运算

并集

本质为ab两个集合相或

例如:

a={1,23,4,5,6,(3,4,5),'hello'} b={3.14, 'world',1,23,4,5} c=a|b print(c) #{1, 3.14, 4, 5, 6, 'world', 'hello', (3, 4, 5), 23}
交集

本质为两集合相与

例如:

a={1,23,4,5,6,(3,4,5),'hello'} b={3.14, 'world',1,23,4,5} c=a&b print(c) #{1, 4, 5, 23}
差集

用于获取属于被减集合而不属于减集合的集合

a={1,23,4,5,6,(3,4,5),'hello'} b={3.14, 'world',1,23,4,5} c=a - b print(c) #{(3, 4, 5), 6, 'hello'}
对称差集

本质为两集合异或:

a={1,23,4,5,6,(3,4,5),'hello'} b={3.14, 'world',1,23,4,5} c=a ^ b print(c) #{3.14, 6, 'world', (3, 4, 5), 'hello'}

集合遍历

可通过for循环来直接遍历:

a={3.14, 6, 'world', (3, 4, 5), 'hello'} for icnt in a: print(icnt) """3.14 (3, 4, 5) hello 6 world"""
返回列表