1.python容器的概念
容器类型:多个数据汇总。
其中包括三种基本类型:
(1)序列型:列表、元组(不可修改)
(2)映射型:字典
(3)集合型:集合
2.列表与元组
2.1通用操作:
s1 + s2 : 连接 将s1和s2连接成一个序列
s * n 或 n * s : 将序列s复制n次并连接成一个序列
s[i]: 返回序列s中的第i个元素;正向索引,i 从0至n-1;反向索引,i从-1至-n。n是元素个数。
s[start : stop : step]将序列s中的第start个元素(含)起至第stop个元素(不含),切成间隔为step的子序列。若start为0可省略;若step为1可省略(当步长省略时,可顺便省略最后一个冒号)。
len(s): 求长度 返回序列s的元素数(长度)
min(s) 和 max(s): 返回序列s中的最小和最大的元素
x in s 和 x not in s :判断元素x 是否是序列s中的元素,返回True 或 False
del s 删除 删除序列s
for var in s : 循环操作 对s中的元素进行循环操作
2.2列表及内置方法
列表(list)是元素可变的有序表。可添加/修改/删除元素,元素类型可不同。
list内置的方法:
2.21分片赋值:将指定位置分片元素值变成另一个列表的值
L=[1,2,3,4,5]
L[1:1]=[10,9]
print(L)
#[1, 10, 9, 2, 3, 4, 5]
L[1:1]为空表,被赋值为[10,9],从而实现将新元素插入原来列表指定位置。
也可以将指定的分片赋值的空表,实现元素的删除
L=[1,2,3,4,5]
L[1:3]=[]
print(L)
#[1, 4, 5]
2.22追加,弹出与插入
L.append(var) :在表尾追加元素
L.pop(x):范湖序号为x的元素,如果括号为空则返回最后一个元素,并在列表中删除该元素
L.insert(index,var):在下标index的位置插入元素
2.23其他基本方法
L.remove(var) #删除第一次出现的该元素
L.count(var) #该元素在列表中出现的个数
L.index(var) #该元素的位置,无则抛异常
L.extend(list) #追加list,即合并list到L上
L.sort(key=None,reverse=false) #排序,关键词key,一般通过lambda表达式可对指定元素排序,默认升序
L.reverse() #倒序
L.copy() #返回列表的浅拷贝
del L[1] #删除指定下标的元素
del L[1:3] #删除指定下标范围的元素
L.clear()#删除列表内的所有元素等价于 del L[:]
2.24列表基本函数
map:将指定函数作用于列表每一个元素。
L=['1','2','3']
z=map(float,L)
L=list(z)
print(L)
输出结果为[1.0, 2.0, 3.0],如果只用map函数,那么将返回map对象。
zip :
(1)zip函数将多个列表对应元素整合成元组的形式,同map相似,使用该函数将返回的是zip对象,可用list 转化成列表表示。
order=['0','1','2']
ages=[21,20,19]
ziped=zip(order,ages)
print(ziped)
print(list(ziped))
运行结果为:
<zip object at 0x00000249FA734BC8>
[(‘0’, 21), (‘1’, 20), (‘2’, 19)]
2.25元组
(1)元组创建后不可变,但列表可变
(2)元组可做字典的键以及集合的元素,但列表不行
(3)同过tuple()和list()可分别实现列表和元组相互转化
2.26列表推导式`
语法格式[结果表达式 for 表达式1 in 容器1 if 条件1(可不加if )
…
for 表达式n in 容器n if 条件n(可不加if )]
L=[(x,y) for x in range(1,101) if x%2==0 for y in range(1,101) if y%2!=0]
#该列表推导式等价于
L0=[]
for x in range(1,101):
if x % 2 == 0:
for y in range(1, 101):
if y % 2 != 0:
L0.append((x,y))
L==L0
Out[19]: True
3.字典
3.1性质:
(1)字典类型是“键:值”的数据组合,每一个元素都是一个键值对
(2)字典通过键查找对应的值,这一过程称为“映射”
(3)键唯一,且为不可变数据类型,如:字符串,元组
(4)值可以是任何数据类型
3.2基本操作
(1)同一个字典的两种创建方法
D0=dict([[(1,2),['a','b']],[(3,4),['c','d']]])
D1={(1,2):['a','b'],(3,4):['c','d']}
(2)由键取值的方法
print(D1[(1,2)])
print(D1.get((3,6),'无此键值对'))#返回键对应的值,如果查不到该键则返回后面的内容,默认为None
输出的结果为:
[‘a’, ‘b’]
‘无此键值对’
(3)修改与删除
d[key]=value
del d[key]
(4)遍历
for key in D0.keys():
#遍历所有键
for value in D0.values():
#遍历所有值
for key,value in D0.items():
print(key,value)
最后一条输出结果为
(1, 2) [‘a’, ‘b’]
(3, 4) [‘c’, ‘d’]
3.3字典推导式
和列表推导类似
A=['a','b','c','d']
print({x:ord(x) for x in A})
输出结果为:
{‘a’: 97, ‘b’: 98, ‘c’: 99, ‘d’: 100}
3.4其他字典内置操作
D0.copy() #返回D0的浅拷贝
D0.clear() #清空D0的值
D0.pop(key[,default]) #若字典存在key 则删除并返回key的值,若不存在,返回default值,如果没有给出default则引发Keyerror 异常
print(D0.pop(5,'无该键值对'))
'无该键值对'
D0.setdefault(key,default=None)#若字典中不存在Key,则通过D0[key]= default 为其赋值
D3.update(D0) #将字典D0的键值对添加到D3中。
D3={1:2}
print(D3.update(D0))
{1: 2, (1, 2): ['a', 'b'], (3, 4): ['c', 'd']}
4.集合
4.1性质:
(1)集合为不重复元素无序集,与数学定义相似
(2)元素为不可变数据类型,例如:字符串,元组
(3)无顺序因而没有索引,排序的概念
(4)通常可以用集合来去重
(5)由set()创建,或将其他容器转化为集合
4.2基本方法
(1)创建:
S={x1,x2}
(2)添加和移出
S.add(x)和S.remove(x)
S={1,2,3}
S.add(4)
print(S)
{1, 2, 3, 4}
S.remove(1)
print(S)
{2, 3, 4}
len(S) #求项数
3
遍历与集合推导式与列表字典类似。