1.列表list
问题:
如何将计算机运算的数据临时存入一个地方,同时又方便添加,删除,修改等操作
定义:
列表是一种容器
列表是序列的一种
列表是可以改变的序列
列表中由一系列特定元素组成的,元素与元素之间可以没有任何的关联关系,但他们之间有先后顺序
创建空列表字面值:
L = [] #变量绑定空列表
创建非空列表的字面值:
L = [1,2,3,4]
L = [‘beijing’,’shanghai’,’shenzhen’]
L =[1,’two’,3.14,’四’]
L = [1,2,[3.1,3.2,3.3],4]
2. 列表的构造(创建)函数list
List() 生成一个空的列表,等同于【】
List (Iterable)用可迭代对象创建一个列表
示例:
L = list() # L 绑定一个空列表
L = list(“hello”) # L 绑定【‘h’‘e’‘l’‘l’‘o’】
L = list(range(1,10,2))
3. 列表的运算
算数运算:
+ += * *=
+ 用于拼接列表
x = [1,2,3] y=[4,5,6]
z = x + y #z = [1,2,3,4,5,6]
+= 用于元列表与左侧列表拼接,用变量绑定拼接后的列表
x = [1,2,3]
x +=[4,5,6]
print(x)
* 生成重复的列表
x = [1,2] * 3 #x=[1,21,2,1,2]
*= x *= y 等同于 x = x * y
3. 列表比较循环
运算符:
< <= > >= == !=
比较的规则同字符串的规则相同
x = [1,2,3]
y = [1,2,4]
x != y #True
x <= y #True
y > x #True
[“AB”,’abc’,’123’] < [‘AB’,’123’,’abc’] #False
[1,’two’] >[‘two’,1] #TypeError
4.列表的in/not in运算符
作用:
判断一个值是否存在于列表中。如果存在返回True,否则返回False
not in 的返回值余in运算符相反
示例:
2 in [1,2,3,4] #True
‘2’ in [1,2,3,4] # False
5.列表是可迭代对象:
Forx in [2,3,5,7]:
Print(x) #x 绑定列表内的元素
6.列表的索引操作
语法:
列表[整数表达式]
用法:
等同于字符串的索引
索引分正向索引和反向索引,规则与字符串规则完全相同
示例:
L = list(“ABCD”)
print(L[1]) # B
7.列表的索引赋值
列表是可变的,可以通过索引赋值改变列表中的元素
示例:
L = [1,2,3,4]
L(2) = 3.1
print(L)#L = [1,2,3.1,4]
15.列表的切片
语法:
列表[:]
列表[::]
说明:
列表的切片取值返回一个列表,规则等同于字符串切片规则
示例:
x = list(range(10))
y = x[1:9:2] #奇数
y = x[::] #复制x列表
8.列表的切片赋值
语法:
列表[切片slice] = 可迭代对象
作用:
可以改变元列表的排序,可以插入数据和修改数据
可以用切片改变列表对应的元素的值
说明:
切片的赋值运算符(=)的右侧必须是一个”可迭代对象”
示例:
L = [2,3,4]
L[1:2] = [3.1,3.2] # L = [2,3.1,3.2,4]
L[:1] = [1.1,1.2] #L = [1.1,1.2,2,3.1,3.2,4]
切片注意事项:
对于不等于1的切片赋值,赋值运算符的右侧的可迭代对象提供的数据元素的个数一定要等于切片切出得段数
例如:
L=[1,2,3,4,5,6]
L =[::2] =’ABC’ #正确
L =[::2] =’abcde’ #错误
9.del 语句
del 可以用来删除列表元素
语法:
Del 列表【索引】
Del 列表【切片】
示例:
L = [1,2,3,4,5,6]
Del L[1] #[1, 3, 4, 5, 6]
Del L[2] #[1, 3, 5, 6]
Del L[-1] #[1, 3, 5]
L =[1,2,3,4,5,6]
Del L[::2] #[2, 4, 6]
10.python3中常用的序列函数
len(x) 返回序列的长度
max(x) 返回序列的最大值元素
min(x) 返回序列的最小值元素
sum(x) 返回序列中所有元素的和(元素必须是数)
any(x) 真值测试,如果列表中的其中一个元素为真值,则返回True
all(x) 真值测试,如果列表中的所有元素都是真值,则返回True,否则返回False
示例:
L = [1,7,0,3,2]
Print(len[L]) #5
Print(max[L]) #7
Print(min[L]) #0
Print(sum[L]) #13
Print(any[L]) #True
Print(all[L]) #False
11.python3 中常用的列表方法
详见:
方法 |
意义 |
L.index(v[,begin[,end]]) |
返回对应元素的索引下标, begin为开始索引,end为结束索引,当 value 不存在时触发ValueError错误 |
L.insert(index, obj) |
将某个元素插放到列表中指定的位置 |
L.count(x) |
返回列表中元素的个数 |
L.re e(x) |
从列表中删除第一次出现在列表中的值 |
L.copy() |
复制此列表(只复制一层,不会复制深层对象) |
L.append(x) |
向列表中追加单个元素 |
L.extend(lst) |
向列表追加另一个列表 |
L.clear() |
清空列表,等同于 L[:] = [] |
L.sort(reverse=False) |
将列表中的元素进行排序,默认顺序按值的小到大的顺序排列 |
L.reverse() |
列表的反转,用来改变原列表的先后顺序 |
L.pop([index]) |
删除索引对应的元素,如果不加索引,默认删除最后元素,同时返回删除元素的引用关系 |
12.sorted 函数
用于生成一个排序后的列表
格式:
Sorted (iterabie,reverse=Flase)
reverse(seq)返回原序列反序的可迭代对象
示例:
L = [7,9,5,1,3]
L2 =sorted(L) # L2 = [1,3,5,7,9]
L3 =sorted(L,reverse =False) # L3 = [9,7,5,3,1]
for x in reverse(L):
print(x) #3 1 5 7 9
21.字符串的文本解析方法split和join方法:
S.split(sep = None)
将字符串使用sep作为分隔符分割S符串,返回分割后的字符串列表,当不给定参数时默认用空白字符作为分隔符分割
S.join(iterrable)用可迭代对象中提供的字符串,返回一个中间用S行分割的字符串
示例:
S = ‘beijing is capital’
L = s.split(‘‘) # L =[‘beijing’,’is’,’capital’]
L = [“C:”,”windows”,”system32”]
S = ‘\\’.join(L) #s =r”C:\Windows\system32”
13. 深拷贝deep copy 和浅拷贝shallowcopy
浅拷贝shallowcopy:
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]]
L0 = 3.14
print(L1) #[1,2,[3.14,3.2]]
print(L2) #[1,2,[3.14,3.2]]
说明:浅拷贝是指在复制过程中,只复制一层变量,不会复制深层变量绑定的对象的复制过程。
深拷贝 deep copy
对所有可变对象进行层层复制,实现对象的各自独立
示例:
Import copy #先导入复制模块
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]]
L0 = 3.14
print(L1) #[1,2,[3.14,3.2]]
print(L2) #[1,2,[3.1,3.2]]
14.列表推导式 list comprehension
列表推导式是用可迭代对象依次生成带有多个元素的列表的表达式
作用:
用简易方法生成列表
语法:
[表达式 for 变量 in 可迭代对象]
[表达式 for 变量 in 可迭代对象 if 真值表达式]
示例:
#生成一个列表,次列表内的数值是1-9的平方
L = [x ** 2 for x in range (1,10)]
#用列表推导式生成1-100内奇数的列表
L = [x for x in range(1,100,2)]
L = [(x * 2 -1) for x in range(1,51)]
L = [x for x in range(100) if x %2 ==1]
15.列表推导式的嵌套
语法:
[表达式 for 变量1 in 可迭代对象1 if 真值表达式1
表达式 for 变量2 in 可迭代对象2 if 真值表达式2
。。。。。。]
示例:
用字符串“ABC”和”123”生成如下列表:
[‘A1’,’A2’,’A3’,’B1’,’B2’,’B3’,’C1’,’C2’,’C3’]
L = [x + y for in “ABC” for y in “123”]