|
楼主 |
发表于 2022-10-1 17:53:13
|
显示全部楼层
本帖最后由 风一样的僧 于 2022-10-1 23:01 编辑
Day6
1. 列表----列表是可变的,字符串是不可变的
创建列表:
将所有要放入列表中的元素用[]包裹起来,用,分割,不同类型的元素可以放入一个列表
创建列表名称: X=[]
列表的索引:排序索引,下标索引,逆向索引,函数len的灵活运用索引
列表切片:获取列表中的部分元素
x=[1,2,3,4,5,"jjjjj"]
print(x)
[1, 2, 3, 4, 5, 'jjjjj']
for each in x:
print(each)
1
2
3
4
5
jjjjj
x[0]
1
x[4]
5
x[5]
'jjjjj'
x[-1]
'jjjjj'
length=len(x)
x[length-1]
'jjjjj'
x[0:3]
[1, 2, 3]
x[4:6]
[5, 'jjjjj']
x[3,6]
x[3:6]
[4, 5, 'jjjjj']
x[0:3:1]
[1, 2, 3]
x[0:6:2]
[1, 3, 5]
x[6:0:-2]
['jjjjj', 4, 2]
x[6:0:-1]
['jjjjj', 5, 4, 3, 2]
x[::-1]
['jjjjj', 5, 4, 3, 2, 1]
x[::-2]
['jjjjj', 4, 2]
x[::2]
[1, 3, 5]
x[::2]
[1, 3, 5]
x[0:3]
[1, 2, 3]
x[:3]
[1, 2, 3]
x[3:]
[4, 5, 'jjjjj']
2.列表的诸多方法(增、删、改、查)
增:append:在列表最后添加一个元素
heroes=["黑寡妇","美队"]
print(heroes)
['黑寡妇', '美队']
heroes.append("博士")
heroes
['黑寡妇', '美队', '博士']
extend:在列表最后添加一个可迭代对象
heroes.extend(["绿巨人","鹰眼"])
heroes
['黑寡妇', '美队', '博士', '绿巨人', '鹰眼']
使用万能的切片语法,也可以实现列表元素的添加:
>>> s = [1, 2, 3, 4, 5]
>>> # 下面的做法等同于 s.append(6)
>>> s[len(s):] = [6]
>>> s
[1, 2, 3, 4, 5, 6]
>>> # 下面的做法等同于 s.extend([7, 8, 9])
>>> s[len(s):] = [7, 8, 9]
>>> s
[1, 2, 3, 4, 5, 6, 7, 8, 9]
insert:在列表的对应位置插入元素
x=[1,2,3,5]
x.insert(3,4)
x
[1, 2, 3, 4, 5]
x.insert(0,0,)
x.insert(0,0)
x
[0, 0, 1, 2, 3, 4, 5]
x.insert(len(x),6)
x
[0, 0, 1, 2, 3, 4, 5, 6]
删:remove----删除列表中的对应元素,如果有多个相同元素,只删除第一个;如果该元素不存在,程序报错;
heroes
['黑寡妇', '灭霸', '美队', '雷神']
heroes.remove("灭霸")
heroes
['黑寡妇', '美队', '雷神']
pop:删除某个下标位置的元素
heroes
['黑寡妇', '美队', '雷神']
heroes.pop(2)
'雷神'
heroes
['黑寡妇', '美队']
clear:清空列表
heroes
['黑寡妇', '美队']
heroes.clear()
heroes
[]
改:利用赋值号‘=’来完成,首先删除=左侧内容,再替换为=右侧内容
heroes=["黑寡妇","灭霸","美队","雷神"]
heroes[3]="钢铁侠"
heroes
['黑寡妇', '灭霸', '美队', '钢铁侠']
heroes[1:]=["武松","李逵"]
heroes
['黑寡妇', '武松', '李逵']
nums=[1,2,6,4,3,7,5]
nums
[1, 2, 6, 4, 3, 7, 5]
nums.sort()----------------------------------对列表中元素进行排序
nums
[1, 2, 3, 4, 5, 6, 7]
nums.reverse()--------------------------------对元素进行反转
nums
[7, 6, 5, 4, 3, 2, 1]
heroes
['黑寡妇', '武松', '李逵']
heroes.reverse()------------------------------对元素进行反转
heroes
['李逵', '武松', '黑寡妇']
nums=[1, 2, 6, 4, 3, 7, 5]
nums
[1, 2, 6, 4, 3, 7, 5]
nums.sort(reverse=True)-------------------sort() 方法还可以实现排序后翻转(即从大到小的排序)
nums
[7, 6, 5, 4, 3, 2, 1]
查:count函数
count:----------------------------------------确认元素的数量
nums=[1, 2, 6, 4, 3, 7, 5,5]
nums
[1, 2, 6, 4, 3, 7, 5, 5]
nums.count(5)
2
heroes=['李逵', '武松', '黑寡妇']
heroes.index("武松")------------------------确认元素的位置
1
nums=[1, 2, 6, 4, 3, 7, 5,5,1,2]
nums.index(1)
0
nums.index(1,1,9)---------------------------确定元素在规定区间内的位置
8
heroes[heroes.index("武松")]="绿巨人"------------------确认相应元素位置后完成替换
heroes
['李逵', '绿巨人', '黑寡妇']
copy_1=heroes.copy()------------------将元素从列表1复制到列表2
copy_1
['李逵', '绿巨人', '黑寡妇']
copy_2=heroes[:]-----------------------同样实现复制
copy_2
['李逵', '绿巨人', '黑寡妇']
3.列表的运算
加法和乘法
s=[1,2,3]
t=[4,5,6]
s+t
[1, 2, 3, 4, 5, 6]
s*3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
嵌套列表
matrix=[[1,2,3],[4,5,6],[7,8,9]]
matrix
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
matrix=[[1,2,3],---------------------------与上面的意思一样,这个更直观,就是矩阵(matrix)
[4,5,6],
[7,8,9]]
matrix
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
访问嵌套列表:
for i in matrix:
for each in i:
print(each)
1
2
3
4
5
6
7
8
9
for i in matrix:
for each in i:
print(each,"")
print()-----------------------------自带换行符
1
2
3
4
5
6
7
8
9
for i in matrix:
for each in i:
print(each,end="")----------------end=“”让参数在一行
print()
123
456
789
for i in matrix:
for each in i:
print(each,end=" ")---------------加空格
print()
1 2 3
4 5 6
7 8 9
通过 for 语句来创建并初始化二维列表
A=[0]*3
A
[0, 0, 0]
for i in range(3):-----------------------------range(3)=(0,1,2)
A[i]=[0]*3
A
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
for i in range(3):
A[i]=[0]*3
print(A)-------------------------------参与循环
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
for i in range(3):
A[i]=[0]*3
print(A)-----------------------------------不参与循环
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
is:用于追本溯源,确认列表在Python的存储位置是否一致
A
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
B=[[0]*3]*3
B
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
A[1][1]=1
A
[[0, 0, 0], [0, 1, 0], [0, 0, 0]]---------------只替换了第2行第2列的数
B[1][1]=1
B
[[0, 1, 0], [0, 1, 0], [0, 1, 0]]----------------同时替换了三行第二列的数
x="FishC"
y="FishC"
x=y
x is y
True
x=[1,2,3]
y=[1,2,3]
x is y-------------------------------------------由于列表可以随时更新更改,Python会将每个列表单独存储,所以is not
False
A
[[0, 0, 0], [0, 1, 0], [0, 0, 0]]
B
[[0, 1, 0], [0, 1, 0], [0, 1, 0]]
A[0] is A
False
A[0] is A[1]
False
A[1] is A[2]
False
B[0] is B[1]
True
B[1] is B[2]
True
变量不是一个盒子
x=[1,2,3]
y=x---------------------y=x指的是y引用了x所引用的【1,2,3】,并未创建新的列表
y
[1, 2, 3]
x[1]=1
x
[1, 1, 3]
y
[1, 1, 3]
深拷贝与浅拷贝
浅拷贝包括copy和切片两种形式,浅拷贝仅拷贝外层对象,如果出现嵌套时,其只能拷贝其引用值,内层的存储地址和copy对象一样
数列copy
x=[1,2,3]
y=x.copy()-----------------copy让y有了独立的列表,当原x列表发生改变时不会影响y(copy拷贝的是整个列表,而不仅仅是变量的引用)
y
[1, 2, 3]
x[1]=1
x
[1, 1, 3]
y
[1, 2, 3]
数列切片
x=[1,2,3]
y=x[:]--------------------------------x[:]=x[0:2]=[1,2,3]
x
[1, 2, 3]
y
[1, 2, 3]
x[1]=1
x
[1, 1, 3]
y
[1, 2, 3]
深拷贝
x=[[1,2,3],[4,5,6],[7,8,9]]
y=x.copy()
x[1][1]=0
x
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]
y
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]-----------------------当copy对象为有嵌套的列表时,copy只能作用于外层,而内部嵌套内容仍是引用的copy对象
copy作为一个python的函数模块使用,包括两个函数:copy和deepcopy
import copy----------------------------------------使用模块时要先用import导入
x=[[1,2,3],[4,5,6],[7,8,9]]
y=copy.copy(x)-----------------------------------使用模块中的浅拷贝copy函数
x[1][1]=0
x
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]
y
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]
x=[[1,2,3],[4,5,6],[7,8,9]]
y=copy.deepcopy(x)----------------------------使用模块中的深拷贝deepcopy函数
x[1][1]=0
x
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]
y
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
|
|