列表的索引操作:
语法:列表 [整数表达式]
用法:等同于字符串的索引
索引分正向索引和反向索引,规则与字符串规则相同
示例:
L=list(‘ABCD’)
print(L[1]) # B
print(L[-1]) # D
列表的索引赋值
列表是可变的,可以通过索引赋值改变列表中的元素
示例:
L=[1,2,3,4]
L[2]=3.1
print(L) #[1,2,3.1,4]
L+=[5,6,7]
print(id[L])
列表的切片操作
语法: 列表[:]
列表[::]
说明:
列表的切片取值返回一个列表,规则等同于字符串切片规则
示例:
x=list(range(10))
y=x[1:9:2]
y=x[:] # 复制列表,生成了一个新列表
切片的赋值
语法: 列表[切片slice] = 可迭代对象
作用:
可以改变原列表的排序,可以插入数据和修改数据
可以用切片改变列表对应元素的值
说明:
切片的赋值运算符(=)的右侧必须是一个可迭代对象
示例:
L= [2,3,4]
L[1:2]= [3.1, 3.2] # L=[2, 3.1, 3.2, 4]
L[:0]= [0,1] # L=[0, 1, 2, 3.1,3.1, 4]
L=[1,2]
L[2:]=range(3,10) # L=[1,2,3,...9]
切片注意事项:
对于步长不等1的切片赋值,赋值运算符右侧的可迭代对象提供的数据元素的个数,
一定要等于切片切出的段数
例如:
L=[1,2,3,4,5,6]
L[::2]=’ABC’ # 正确
L[::2]=’ABCDE’ # 错误
del语句
del 可以用来删除列表元素
语法: del 列表[索引]
del 列表[切片]
示例:
L=[1,2,3,4,5,6]
del L[1]
del L[-1]
L=[1,2,3,4,5,6]
del L[::2]
python中常用的序列函数:
len(x) 返回序列的长度
max(x) 返回序列的最大值
min(x) 返回序列的最小值
sum(x) 返回序列所有元素的和(元素必须是数字)
any(x) 真值测试,如果列表中一个元素为真值,返回True
all(x) 真值测试,列表中所有元素都为真值,返回True,否则返回False
sorted函数:(临时排序)
用于生成一个排序后的列表
格式: sorted(iterable,reverse=False)
reversed(seq) 返回原序列反序的可迭代对象
示例:
L=[7,9,5,3,1]
L2=sorted[L] #L2=[1,3,5,7,9]
字符串的文本解析方法split和join方法
S.split(sep=none)
使用sep作为分隔符分割S字符串,返回分割后的字符串列表,
当不给定参数时默认使用空白字符作为分隔符分割
S.join(iterable)
用可迭代对象中提供的字符串,返回一个中间用S进行分隔的字符串
示例:
s=”Beijing is capital”
L=s.split(‘’) #L=[‘Beijing’,’is’,’capital’]
L=[“C:”,”Windows”,’System32’]
s=’\\’.join(L) # s=r”C:\Windows\System32”
深拷贝deep copy 和浅拷贝 shallow copy
对象是不可变对象时,深拷贝和浅拷贝没有区别,当对象可变时才有区别
浅拷贝 shallow copy
L=[3.1,3.2]
L1=[1,2, L]
L2=L1.copy() # 浅拷贝,只复制一层
print(L1) # [1, 2, 3.1, 3.2]
print(L2) # [1, 2, 3.1, 3.2]
L[0]=3.14
print(L1) # [1, 2, 3.14, 3.2]
print(L2) # [1, 2, 3.14, 3.2]
说明:浅拷贝指在复制过程中,只复制一层对象,不会复制深层变量绑定对象的复制过程
深拷贝 deep copy
对所有拷贝对象进行层层复制,实现对象的各自独立
例:
importcopy #导入复制模块
L=[3.1, 3.2]
L1=[1,2, L]
L2=copy.deepcopy(L1) # 深拷贝
print(L1) # [1, 2, 3.1, 3.2]
print(L2) # [1, 2, 3.1, 3.2]
L[0]=3.14
print(L1) # [1, 2, 3.14, 3.2]
print(L2) # [1, 2, 3.1, 3.2] #此列表不受影响
列表推导式 list comprehesion
列表推导式是用可迭代对象依次生成带有多个元素的列表的表达式
作用:
用简易方法生成列表
语法:
[表达式 for 变量 in 可迭代对象]
或
[表达式 for 变量 in 可迭代对象 if 真值表达式]
示例:
# 生成一个列表,此列表内的数值是1-9的平方
L= [x**2 for x in range(1,10)]
列表推导式的嵌套
语法:
[表达式
for 变量1 in 可迭代对象1 if 真值表达式1
for 变量2in 可迭代对象2if 真值表达式2
...]
示例:
用字符串’ABC’和’123’生成如下列表:
[‘A1’,‘A2’,‘A3’,‘B1’,‘B2’,‘B3’,‘C1’,‘C2’,‘C3’]
L=[x + y for x in‘ABC’ for y in ‘123’]