目录
1.2.2 添加集合元素add():将要添加的元素作为一个整体添加
1.2.3 添加集合元素update():将要添加的元素拆分成单个添加
1.2.13 并集|:返回的是两个集合去掉重复的元素组成的集合
1.2.14 差集-:返回的是在集合1但不在集合2中的元素组成的集合
1.2.17 ssuperset()/issubset():超集和子集
1.2.18 不可变集合frozenset,不能添加和删除元素
2.1、写函数实现,给定一个数,一个列表中是否存在2个数之和为这个数,在返回2个数的坐标,不存在返回None
2.2、利用递归,处理嵌套列表,生成列表l=[1,2,[3,4,[5,6,7,[8,9,[10,11]]]]]
2.5、两句话:1.求两句话中出现的重复单词 2.求两句话中出现的不重复单词
一、集合
1.1 定义
set是python中的一种基本数据类型,特点是其中的元素都是不重复的,而且是无序的。集合分为两种:可变集合set和不可变集合frozenset。
可变集合set:创建非空的集合时,参数必是迭代器类型(包括字符串、列表、元组、字典),然后转换成无序不重复的集合,所以可以用来去重。
不可变集合frozenset:是不能被改变的,也就是不能插入和删除,类似与元组
>>> s=set("abcabc")
>>> s
{'a', 'b', 'c'}
>>> s2={1,2,3,4}
>>> type(s2)
<class 'set'>
>>> s2
{1, 2, 3, 4}
>>> set("abcddk")
{'k', 'b', 'd', 'a', 'c'}
>>> set([1,2,33])
{1, 2, 33}
>>> set((1,2,34,2))
{1, 2, 34}
>>> set({"a":1,"b":2})
{'a', 'b'}
>>> set({"a":1,"b":2}.values())
{1, 2}
>>>
>>> set([])
set()
>>> len(set("123"))
3
>>> s=frozenset("abcdaac")
>>> print(s)
frozenset({'a', 'b', 'c', 'd'})
>>> s2=set("abdabdxc")
>>> print(s2)
{'b', 'd', 'a', 'x', 'c'}
1.2 集合操作
1.2.1 创建空集合
>>> a=set([])
>>> a
set()
>>> type(a)
<class 'set'>
>>> set(())
set()
>>> set({})
set()
>>> set("")
set()
>>> s=set()
>>> s
set()
>>> type(s)
<class 'set'>
1.2.2 添加集合元素add():将要添加的元素作为一个整体添加
>>> s=set("abc")
>>> s
{'a', 'b', 'c'}
>>> s.add("df")
>>> s
{'a', 'b', 'c', 'df'}
>>> s.add("a")
>>> s
{'a', 'b', 'c', 'df'}
1.2.3 添加集合元素update():将要添加的元素拆分成单个添加
>>> s.update("akjf")
>>> s
{'k', 'b', 'j', 'f', 'df', 'a', 'c'}
1.2.4 删除集合元素remove()
>>> s2=set("abdabdxc")
>>> print(s2)
{'b', 'd', 'a', 'x', 'c'}
>>> s2.remove("c")
>>> s2
{'b', 'd', 'a', 'x'}
>>> # 删除之前先判断一下
>>> if "a" in s2:
... s2.remove("a")
...
>>> # 第二种判断
>>> try:
... s2.remove("x")
... except KeyError as e:
... print("集合中不存在该元素!")
... else:
... print("集合中元素删除成功!")
...
集合中元素删除成功!
>>> s2
{'b', 'd'}
1.2.5 修改集合元素:转成list修改后再转成set
>>> s=set("aabdcd")
>>> s
{'a', 'b', 'c', 'd'}
>>> l = list(s)
>>> l
['a', 'b', 'c', 'd']
>>> l[0]="**"
>>> s=set(l)
>>> s
{'b', 'c', 'd', '**'}
1.2.6 遍历集合
>>> for i in set("abca"):
... print(i)
...
a
b
c
>>> a=frozenset("abcd")
>>> a
frozenset({'a', 'b', 'c', 'd'})
>>> type(a)
<class 'frozenset'>
>>> for i in a:
... print(i)
...
a
b
c
d
集合是无序的,它不支持切片
>>> s=set("abcd")
>>> s
{'a', 'b', 'c', 'd'}
>>> s[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'set' object is not subscriptable
但可以用枚举实现:
>>> sTest = set(['e', 'two', 'o', 'n', '1', '3', '2'])
>>> #遍历集合
>>> for index, elem in enumerate(sTest) :
... print ("元素的索引号为:", index, "对应的元素为:", elem)
...
元素的索引号为: 0 对应的元素为: o
元素的索引号为: 1 对应的元素为: n
元素的索引号为: 2 对应的元素为: 2
元素的索引号为: 3 对应的元素为: 3
元素的索引号为: 4 对应的元素为: 1
元素的索引号为: 5 对应的元素为: e
元素的索引号为: 6 对应的元素为: two
1.2.7 discard():查找元素并删除
➢ 函数原型:
setVar.discard(elemen