笔记索引
集合
Python语言的集合类型与数学中的集合一致:包含0个或多个数据项的无序组合,用大括号 { }表示,它可以动态增加或删除,但不能比较和排序
>>>S1 = {
1,'ada',(4,5,3),'1',1.0}
>>>S2 = set('人生若只如初见') # set()表示空集
>>>S3 = set((1,5,6,1))
>>>print(S2)
{
'只', '若', '如', '见', '生', '人', '初'}
>>>print(S3)
{
1, 5, 6}
⭐注:set([iterable])函数的参数只能创建可迭代对象:列表、元组、字典、字符串
集合的性质
确定性
给定一个集合,任给一个元素,该元素或者属于或者不属于该集合,二者必居其一,不允许有模棱两可的情况出现
互异性
一个集合中,任何两个元素都认为是不相同的,由于每个元素只能出现一次,所以使用集合类型能够过滤掉集合本身的重复的元素
无序性
一个集合中,每个元素的地位都是相同的,元素之间是无序的,即集合是无序组合,因此它没有索引和位置的概念,集合的输出顺序和定义顺序可以不一致
⭐注:集合里面不能存可变数据类型(字典、集合、列表)
>>>S = {
1,'ada',(4,5,3),'1',1.0}
>>>print(len(S))
4
>>>print(type(S))
<class 'set'>
>>>print(S)
{
1, '1', 'ada', (4, 5, 3)}
集合的运算
>>>A = {
1,'ada',(4,5,3),'1',1.0}
>>>B = {
1,(1,3.14,'5A')}
>>>print(A-B)
{
'1', 'ada', (4, 5, 3)}
>>>print(A|B)
{
1, (1, 3.14, '5A'), (4, 5, 3), '1', 'ada'}
>>>print(A&B)
{
1}
>>>print(A^B)
{
'1', (1, 3.14, '5A'), 'ada', (4, 5, 3)}
集合常用函数
函数或方法 | 描述 |
---|---|
s.issubset(t) | s 中所有的元素是否都是 t 的成员,s <= t |
s.issuperset(t) | t 中所有的元素是否都是 s 的成员 ,s >= t |
s.add(obj) | 将 obj 添加到 s |
s.pop() | 移除并返回 s 中的随机一个元素 |
s.discard(obj) | 将 obj 从 s 中删除,如果 s 中不存在 obj,也不会报错 |
s.remove(obj) | 将 obj 从 s 中删除,如果 s 中不存在 obj,会报错 |
s.clear() | 清除 s 中的所有元素 |
s.copy() | 返回 s 的浅拷贝 |
x in s | x是s的元素返回True,否则返回False |
x not in s | x不是s的元素返回True,否则返回False |
字典
字典是键值对的集合
字典是可变无序的,无序指的是因为字典本质是hash表(hash表的数据结构注定它就是无序的),但是字典的元素本质上是存储在一个连续列表中的,所以在存储方面是有序的
字典的创建
Python语言中的字典使用通过大括号{ }或dict()建立,每个元素是一组键值对,使用方式如下:
'''
字典的创建方式主要分为以下三种:
Ⅰ.{<键1>:<值1>, <键2>:<值2>,<键3>:<值3>,...,<键n>:<值n>}
Ⅱ.Zip()函数
dict(iterable, **kwarg) *arg会把多出来的位置参数转化为tuple
**kwarg会把关键字参数转化为dict
Ⅲ.fromkeys
dict.fromkeys(seq[, value])
seq -- 字典键值列表。
value -- 可选参数, 设置键序列(seq)的值。
'''
>>> dict(a='a', b='b', c='c')
{
'a': 'a', 'b': 'b', 'c': 'c'}
>>> dict(zip(['1, '2', '3'], [1, 2, 3])) # 映射函数方式来构造字典
{
'1': 1, '2': 2, '3': 3}
>>> dict([('1', 1), ('2', 2), ('3', 3)])