1.什么是列表
1.列表是一种容器(用来存储数据对象)
2.列表能够存储多个数据对象 - 序列
3.列表是一个可变序列
4.列表中的数据元素们会有先后顺序
2.创建列表的方式
1.使用字面值的方式创建列表
1.创建空列表
L = []
2.创建非空列表
L = [1,2,3,4] L = ["北京","上海","天津","重庆"] L = ["One",2,3.14,"4"] L = [1,2,[3.1,3.2,3.3],4] L = [ [1,2,3,4], [2,3,4,5], [3,4,5,6] ]
2.使用列表的构造函数创建列表
1.生成空列表
L = list() # list() 是列表的构造函数,效果等同于 []
2.使用可迭代对象创建列表
L = list("hello") #['h','e','l','l','o']
L = list(range(5,10,2)) #[5,7,9]
3.列表的运算
1.算术运算
+,+=,*,*=
1. +
作用:拼接列表
x = [1,2,3] y = [4,5,6] z = x + y # [1,2,3,4,5,6]
2. +=
作用:用于将右侧的可迭代对象的数据追加到原列表中
1. x = [1,2,3] x += [4,5,6] # x = [1,2,3,4,5,6] 2. x = [1,2] x += "AB" # x = [1,2,"A","B"] 3. x = [1,2] x += range(3) # x=[1,2,0,1,2]
3. *
作用:生成重复的列表
1. x = [1,2] * 3 结果 :x=[1,2,1,2,1,2] 2. x = list("AB") # x = ['A','B'] x *= 2 # x = ['A','B','A','B'] 结果 :x = ['A','B','A','B']
2.比较运算
< <= > >= == !=
比较规则:与字符串的比较规则完全相同
1.[1,2,3] < [1,3,2]
结果:True
2.[1,2,3] != [1,3,2]
结果:True
3.[1,'two'] > ['two',1]
结果:TypeError
3.成员运算
in / not in
in:判断一个元素是否存在于列表中,存在返回True,否则返回False
not in : 取值同 in 相反
x = [1,'two',3,'四'] 3 in x : # True 4 in x : # False '四' not in x : False
4.索引操作
1.索引
列表[整数]
用法:
等同于字符串的索引操作(正向索引和反向索引,规则与字符串完全相同)
5.列表的切片 - slice
1.作用
等同于字符串的切片
得到列表中某段连续或符合某特征的子列表
2.列表的切片取值
语法:列表[start:stop:step]
3.列表的切片赋值
列表[切片] = 可迭代对象
注意:
列表切片赋值运算符的右侧必须是可迭代对象
6.del 语句
作用:删除列表中的元素
语法:
del 列表[索引]
del 列表[切片]
L = [0,1,2,3,4,5,6] del L[0] #[1,2,3,4,5,6] del L[::2] #[2,4,6]
1.列表中常用方法 - list api
>>> help(list)
2.详解
1.append()
作用:
在列表的末尾添加新元素
语法:
L.append(obj)
参数 obj:
表示要添加到列表末尾的对象
返回值:
无,但是会修改原来的列表中的值
L = ["漩涡鸣人","宇智波佐助","春野樱"] L.append("旗木卡卡西") 结果:["漩涡鸣人","宇智波佐助","春野樱","旗木卡卡西"]
2.count()
作用:
统计某个元素再列表中出现的次数
语法:
L.count(obj)
参数 obj:
要统计的对象
返回值:
返回obj在列表中出现的次数
L = ["漩涡鸣人","宇智波佐助","春野樱","漩涡鸣人"] L.count("漩涡鸣人") 结果:2
3.extend()
作用:
用于在列表末尾一次性增加另一个序列中的多个值
(用新列表扩展原列表中的值)
语法:
L.extend(seq)
参数 seq:
要扩展的元素列表(序列)
返回值:
无,但会改变原列表中的值
L = ["漩涡鸣人","宇智波佐助","春野樱"] users = ['大蛇丸',"君麻吕","卡卡西"] L.extend(users) 结果:["漩涡鸣人","宇智波佐助","春野樱",'大蛇丸',"君麻吕","卡卡西"]
4.insert()
作用:
用于将指定对象插入到列表的指定位置处
语法:
L.insert(index,obj)
参数 index:
对象obj需要插入的索引位置
参数 obj:
需要插入的对象
返回值:
无,会改变原列表中的内容
L = ['大蛇丸',"君麻吕","卡卡西"] L.insert(2,'漩涡鸣人') 结果:'大蛇丸',"君麻吕",'漩涡鸣人',"卡卡西"
5.index()
作用:
用于从列表中找出某个值第一次匹配的索引位置
语法:
L.index(obj)
参数 obj :
要查找的对象
返回值:
返回该对象对应的索引位置
注:如果没找到的话则抛出异常
L = ['大蛇丸',"君麻吕","卡卡西"] L.index('君麻吕') 结果:1 L = ['大蛇丸',"君麻吕","卡卡西"] L.index('佐助') 会抛出异常
6.pop()
作用:
用于移除列表中的一个元素(默认是最后一个),并返回该元素的值
语法:
L.pop([index=-1])
参数 [index=-1]:
可选参数,要移除的列表的元素的索引值,不能超过列表总长度,默认值为-1,表示删除最后一个列表值
返回值:
返回从列表中移除的元素
L = ['大蛇丸',"君麻吕","卡卡西"] list_pop = L.pop() print(list_pop) print(L) 结果: "卡卡西" ['大蛇丸',"君麻吕"] L = ['大蛇丸',"君麻吕","卡卡西"] list_pop = L.pop(1) print(list_pop) print(L) 结果: "君麻吕" ["大蛇丸","卡卡西"]
7.remove()
作用:
移除列表中某个值的第一个匹配项
语法:
L.remove(obj)
参数 obj:
要移除的内容
返回值:
无,但原列表中第一次匹配的内容会被删除
L = ['大蛇丸',"君麻吕","卡卡西"] L.remove('大蛇丸') print(L) 结果:["君麻吕","卡卡西"]
8.reverse()
作用:
将列表进行翻转
语法:
L.reverse()
参数 :无
返回值 :无,会改变原有的列表值
9.sort()
作用:
对原列表进行排序
语法:
sort(reverse=False)
参数 reverse :
排序规则,默认为False表示升序,设置为True则为降序
返回值:
无,会改变原列表中的值
3.字符串的文本解析方法
1.split()
语法:
S.split(sep=None)
作用:
将字符串S使用sep作为分隔符进行拆分,返回分隔后的字符串列表,如果不指定sep的话则采用空白字符作为分隔符
2.join()
语法:
S.join(iterable)
作用:
用可迭代对象中的字符串,拼接并返回中间使用S进行分割的字符串
4.浅拷贝 和 深拷贝
1.浅拷贝 - shallow copy
1.什么是浅拷贝
浅拷贝是指在复制过程中,只复制一层变量,不会复制深层变量绑定的对象的复制过程
2.语法
L.copy()
2.深拷贝
1.语法
import copy
L1 = copy.deepcopy(L)
5.列表推导式 - comprehension
1.什么是列表推导式
利用可迭代对象生成列表的表达式
使用简易的方法生成列表
2.语法
[ 表达式 for 变量 in 可迭代对象 if 真值表达式 ]
注意:
1.if 真值表达式 是可以省略不写的
2.表达式 是由 变量配合其他运算组合成的一个表达式值
3.列表推导式的嵌套
语法:
[
表达式
for 变量1 in 可迭代对象1 if 真值表达式1
for 变量2 in 可迭代对象2 if 真值表达式2
]