组合数据类型:
1、集合
2、序列 序列包括:元组和列表
3、字典
集合: 多个元素的无序组合,与数学中的集合概念一致。集合元素之间无序,每个元素唯一,不存在相同元素。集合元素不可以更改,不能是可变数据类型,即是不可变数据类型,也就是说一旦一个元素被放入集合中,就不可以被修改。
–集合用大括号{}表示,元素间用逗号分隔
–建立集合类型用{}或set{}
–建立空集合类型,必须用set(),因为{}是默认来生成字典类型的
>>> A={"python",123,("python",123)} #使用{}建立集合
>>> A
{'python', 123, ('python', 123)}
>>> B=set("pypy123") #使用set()建立集合
>>> B
{'3', '1', '2', 'y', 'p'}
注意: 利用set()建立集合后,相同的元素会被去掉,并且也不会按原顺序保留,因为集合中的元素之间没有顺序。
>>> C={"python",123,"python",123}
>>> C
{'python', 123}
我们直接定义一个存在相同元素的方式构造的集合,但是由于集合中不能够包含相同元素,所以通过这种方式生成的集合其实只包含python和123两个元素。
集合间的运算包括四种:并、差、交、补
1、S|T 返回一个新集合,包括在集合S和T中的所有元素,即并操作。
2、S-T 返回一个新集合,包括在集合S但不在T中的元素,即差操作。
3、S&T 返回一个新集合,包括同时在集合S和T中的元素,即与操作。
4、S^T 返回一个新集合,包括集合S和T中非相同的元素,即差操作。
>>> S={"python",123,"ABC"}
>>> T={"python",456,"ABC"}
>>> S|T
{'python', 456, 'ABC', 123}
>>> S-T
{123}
>>> S&T
{'ABC', 'python'}
>>> S^T
{456, 123}
S<=T或S<T 返回Ture/False,判断S和T的子集关系。
S>=T或S>T 返回Ture/False,判断S和T的包含关系。
>>> S={"a","b","c"}
>>> T={"a","b"}
>>> S<T
False
>>> S>=T
True
此外,python还提高了增强了操作符,即通过四种操作符与赋值符号,也就是等号的组合,来实现对集合S的更新
增强操作符。
1、S|=T S和T并运算后的结果来更新集合S中的元素。
>>> S={"python",123,"ABC"}
>>> T={"python",456,"ABC"}
>>> S|=T
>>> S
{'python', 456, 'ABC', 123}
2、S-=T S和T差运算后的结果来更新集合S中的元素
>>> S={"python",123,"ABC"}
>>> T={"python",456,"ABC"}
>>> S-=T
>>> S
{123}
3、S&=T S和T与运算后的结果来更新集合S中的元素
>>> S={"python",123,"ABC"}
>>> T={"python",456,"ABC"}
>>> S&=T
>>> S
{'ABC', 'python'}
4、S^=T S和T差运算后的结果来更新集合S中的元素
>>> S={"python",123,"ABC"}
>>> T={"python",456,"ABC"}
>>> S^=T
>>> S
{123, 456}
集合处理方法:
1、S.add(x) 如果x不在集合S中,将x增加到S中
>>> S={"a","b","c"}
>>> S.add("d")
>>> S
{'c', 'b', 'a', 'd'}
2、S.discard(x) 移除S中元素x,如果x不在集合S中,不报错
>>> S={"a","b","c"}
>>> S.discard("a")
>>> S
{'b', 'c'}
3、S.remove(x) 移除S中元素x,如果x不在集合S中,产生KeyError异常。
>>> S={"a","b","c"}
>>> S.remove("b")
>>> S
{'a', 'c'}
>>> S.remove("f")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'f'
4、S.clear() 移除S中的所有元素
5、S.pop() 随机返回S中的一个元素,更新S(同时删除这个元素),若S为空产生KeyError异常
>>> S={"a","b","c"}
>>> S.pop()
'b'
>>> S
{'a', 'c'}
6、S.copy() 返回集合S的一个副本
>>> S={"a","b","c"}
>>> S.copy()
{'b', 'a', 'c'}
7、len(S) 返回集合S的元素个数
>>> S={"a","b","c"}
>>> len(S)
3
8、x in S 判断S中元素x,x在集合S中,返回Ture,否则返回False
>>> S={"a","b","c"}
>>> "d" in S
False
>>> "a" in S
True
9、set(x) 将其它类型变量x转变为集合类型
>>> A=["1","2","3"]
>>> type(A)
<class 'list'>
>>> B=set(A)
>>> type(B)
<class 'set'>
切记:集合中的元素是无序的
>>> S = {"hello","world",123}
>>> for s in S:
... print(s,end=" ")
...
123 world hello
集合类型应用场景:
1、包含关系比较
>>> "hello" in {"hello","world",123}
True
>>> {"hello","world"}>={"hello","world",123}
False
>>> {"hello","world"}<{"hello","world",123}
True
2、数据去重:集合类型所有元素无重复
>>> A=["hello","hello","world","world",123]
>>> B=set(A) #利用了集合无重复元素的特点,那么B中已经去掉了重复元素
>>> C=list(B) #再将其转换为列表类型
>>> C
[123, 'world', 'hello']
以上内容,如有错误,尽请批评指正!谢谢!