集合set
集合是多个元素的无序组合.
- 集合用大括号{}表示,元素间利用逗号分隔
- 建立集合类型用{}或set()
- 建立空集合类型,必须使用set()
集合操作符
操作符及应用 | 描述 |
---|---|
S|T | 返回一个新集合,包括st中的所有元素 |
S-T | 返回一个新集合,包括在集合s中但不在t中的元素 |
S&T | 返回一个新集合包括同时在s和t中的元素 |
S^T | 返回一个新集合,包括S和T中的非相同元素 |
S<=T或S<T | 返回True/False,判断S和T的子集关系 |
S>=T或S>T | 返回True/False,判断S和T的包含关系 |
集合处理方法
操作函数或方法 | 描述 |
---|---|
S.add | 向集合中添加元素 |
S.discard | 移除集合中的一个元素(如果元素不存在,不报错) |
S.remove | 移除集合中的一个元素(如果元素不存在,会引发 KeyError) |
S.clear | 移除集合中所有元素 |
S.pop | 随机返回集合S的一个元素,更新S(如果集合为空,会引发 KeyError) |
S.copy | 返回集合S的一个副本 |
len(S) | 返回集合S的元素个数 |
x in S | 判断集合S中是否有元素x,是返回True否则返回False |
x not in S | 判断集合S中是否有元素x,是返回False否则返回True |
set(x) | 将其他类型变量x转变为集合类型 |
数据去重,典型用法,利用数组内元素不可重复.
序列sequence
- 序列可以包含一个或多个元素,也可以没有任何元素.
- 我们之前所说的基本数据类型,都可以作为序列的元素.。
- 序列有两种:tuple(元组) 和 list (表)
序列操作符
操作符及应用 | 描述 |
---|---|
x in S | 如果x是序列S的元素,返回True否则返回False |
x not in S | 如果x是序列S的元素,返回False否则返回True |
s + t | 连接两个序列s和t |
SN或NS | 讲序列s复制n次 |
S[i] | 索引,返回序列中的第i个元素 |
S[i:j]或S[i;j;k] | 切片,返回s序列中第i到j步长为k的元素子序列 |
序列处理方法
函数和方法 | 描述 |
---|---|
len(S) | 返回序列S的长度 |
min(s) | 返回序列s的最小元素,s中元素需要可比较 |
max(s) | 返回序列s的最大元素,s中元素需要可比较 |
s.index(x)或s.index(x,i,j) | 返回序列s从i到j中第一次出现元素x的位置 |
s.count(x) | 返回序列中x出现的总次数 |
元组是序列类型的一种扩展.
使用小括号()或tuple()创建,元素间用逗号分隔.
可以使用或不使用小括号.
tuple元素不可变,list元素可变.
字符串是一种tuple.
数据保护将数据转换为元组类型.
字符串是一种特殊的元组,因此可以执行元组的相关操作。
str = 'abcdef'
print(str[2:4])
- 列表是一种序列类型,被创建后可以随意修改
- 使用方括号[]或list()创建,元素间用逗号分隔
- 可以使用或不使用小括号
函数或方法 | 描述 |
---|---|
ls[i]=x | 替换列表ls第i个元素为x |
ls[i:j:k]=lt | 用列表lt替换ls切片后所对应元素子列表 |
del ls[i] | 删除列表ls中第i元素 |
del ls[i:j:k] | 删除列表ls中从第i到第j步长为k的元素 |
ls+=lt | 更新列表ls,将列表lt元素增加到列表ls中 |
ls*=n | 更新列表ls,将元素重复n次 |
列表类型操作类型和方法
函数或方法 | 描述 |
---|---|
ls.append(x) | 在列表最后添加元素x |
ls.clear() | 移除列表中所有元素 |
ls.copy() | 生成一个新列表,赋值ls中所有元素 |
is.insert(i,x) | 在列表ls第i位增加元素x |
ls.pop(i) | 将列表ls中第i位置元素取出并删除 |
ls.remove(x) | 将列表ls中出现的第一个x元素删除 |
ls.reverse() | 将列表ls中元素反转 |
字典
映射映射是一种键(索引)和值(数据)的对应.
- 字典类型是映射的体现.
- 键值对:键是数据索引的扩展.
- 字典是键值对的集合,键值对之间无序.
- 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用(,)分割,整个字典包括在花括号{}中.
<字典变量> = {<键1>:<值1>,<键2>:<值2>...<键n>:<值n>}
键必须是唯一的,但值不必.
>>>d = {"中国":"北京","美国":"华盛顿","法国":"巴黎"}
>>>d
{'中国':'北京','美国':'华盛顿','法国':'巴黎'}
>>>d["中国"]
'北京'
>>>de = {} ; type(de)
<class 'dict'>
函数或方法 | 描述 |
---|---|
del d[k] | 删除字典d中键k对应的数据值 |
k in d | 判断键k是否在字典d中,如果在返回True,否则False |
d.keys() | 返回字典中所有的键信息 |
d.values() | 返回字典中所有的值信息 |
d.items() | 返回字典中所有的键值对信息 |
列表类型操作函数和方法
函数或方法 | 描述 |
---|---|
d.get<k.default> | 键k存在,则返回相应值,不在则返回<default>值 |
d.pop<k.default> | 键k存在,则取出相应值,不在则返回<default>值 |
d.popitem() | 随机从字典中取出一个键值对,以元组形式返回 |
d.clear() | 删除所有的键值对 |
len(d) | 返回字典d中元素的个数 |
对于List:
classmates = ['Michael', 'Bob', 'Tracy']
classmates.append('Adam') //添加在末尾,没有add()方法
classmates.insert(1, 'Jack') //在指定位置添加
classmates.pop(1) //在知道位置删除,参数是索引
del classmate[1] //删除第二个元素
classmates.remove('Bob') //参数是元素,删除第一个与Bob值匹配的元素,之后又相同元素不会删除
对于dict:
d = {'a': 'A', 'b': 'B'}
del d['a']
d.pop('a') //参数是key,没有remove()方法
d['c']='C'; //插入直接赋值即可
对于set:
s={1,2,3} //set对象的创建也可以是s=set(iterable)
s.add(8) //添加8到末尾 没有append()方法
s.remove(8) //参数是元素,不是索引 删除8
s.pop() //删除最后一个元素
对于tuple:
由于tuple一旦初始化就不能修改,所以不能插入和删除.