3.4集合
集合(set)是0个或多个对象引用的无需组合,集合是可变,但对于其中的项是无序的,因此没有索引位置的概念。
3.4.1集合的常用操作
1.创建集合
要创建集合,必须使用set构造函数。set构造函数至多有一个参数,且参数必须是可迭代的,若无参数则创建空集。
nullSet=set()
nullSet
set()
提供一个str作为输入集合,创建一个集合。
a_set=set(‘abcd’)
a_set
{‘a’,’b’,’c’,’d’}
提供一个list作为输入集合,创建一个集合。
s=set([1,2,3])
s
{1,2,3}
重复元素在set中自动被过滤。
s=set([1,1,2,2,3,3])
s
{1,2,3}
2.添加元素
通过add(key)方法可以添加元素到集合中,可以重复添加,但不会有效果。
s.add(4)
s
{1,2,3,4}s.add(4)
s
{1,2,3,4}
3.删除元素
*.通过remove(key)删除元素.
*.discard(key)也可删除元素,但不同的是,如果删除的元素不在集合中remove()会报错,discard()不会.
*.clear()可清除集合中所有元素.
4.典型的集合运算符
*.len():确定集合元素数量
*.in:判断某元素是否在集合中
*for:遍历所有元素
用法大致与之前相同.
5.典型的数学集合运算
(1).交集
set 可看为数学意义上无序,无重复元素的集合,两个可做数学意义上的交集,并集等操作.
s1=set([1,2,3])
s2=set([2,3,4])
s1.intersection(s2)
{2,3}s1&s2
{2,3}
intersection方法创建新集合,该集合为两集合元素的公共部分.进行交集运算时集合的顺序不重
要.”&”也表示取交集.
(2)并集
s1.union(s2)
{1,2,3,4}s1|s2
{1,2,3,4}
union方法创建新集合,该集合中包含两个集合所有的元素.并集运算中两个集合的顺序不重要,”|”也表示取并集.
(3)差集
s1.difference(s2)
{1}s2.difference(s1)
{4}s1-s2
{1}s2-s1
{4}
difference方法收集在调用函数不在参数函数的元素.”-“也表示取差集.
(4)对称差
s1.symmetric_difference(s2)
{1,4}s2.symmetric_difference(s1)
{1,4}
symmetric_difference方法与交集相反,它收集两个元素那些不共享的元素.
(5)子集和超集
集合A的所有元素的每一个元素都是集合B中的元素,则称集合A是B的子集,B是A超集.
s1=set([1,2,3])
s2=set([1,2,3,4,5,6])
s1.issubset(s2)
Trues2.issuperset(s1)
True
set与dict一样不可以放入可变对象
3.4.2集合的常用函数
语法 描述
s.copy() 返回一个新集合,浅拷贝.
s.update(t) 用t修改s中的元素
s.intersection_update(t) 更新s为s和t的交集
s.symmetric_difference_update(t) 更新s为s和t对称差
3.5组合数据类型的高级特性
3.5.1切片
通过切片操作可以按需要取字符串,元组,列表中的部分元素.
方法:list[a?️c]
tuple[a?️c]
string[a?️c]
参数a表示起始位置(包含此位置),参数b表示终止位置(不包含),参数c表示步长即间隔.
即可正序切片也可倒序切片(此时从左数最后一个元素为-1).
3.5.2迭代
(1)字典的迭代
d={“a”:1,”b”:2,”c”:3}
for key in d:
print(key)
a
b
c
(2)字符串的迭代
(3)集合的迭代
(4)列表的迭代
大致相同