|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Nicole37 于 2023-8-10 11:12 编辑
列表5:
1、变量之间直接赋值:你变我也变
注意python中变量赋值的关系,给一个变量赋值,是使该变量引用一个固定值,变量之间直接赋值时,赋值的是原变量的引用x = [1,2,3]
y = x
x[1] = 1
x
[1, 1, 3]
y
[1, 1, 3]
其中x更改值2以后,表示所引用的数值发生了更改,所以y指向的值也跟着变
2、变量之间通过copy来赋值:你变我不变
利用copy进行变量之间的赋值,赋值的是整个列表对象(仅对一维列表有效)x = [4,5,6]
y = x.copy()
x[1] = 8
x
[4, 8, 6]
y
[4, 5, 6]
3、切片赋值与copy作用类似x = [4,5,6]
y = x[:]
x[1]=1
x
[4, 1, 6]
y
[4, 5, 6]
3、上述为浅拷贝,仅适用于一维列表,拷贝的只是外层对象,当出现列表嵌套时,拷贝的只是其引用
4、深拷贝:使用copy模块 ,拷贝的是内外所有嵌套的列表import copy #导入copy模块
#浅拷贝
x = [[1,2,3],[4,5,6],[7,8,9]]
y = copy.copy(x) #表示引用copy模块中的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]]
#深拷贝deepcopy
x = [[1,2,3],[4,5,6],[7,8,9]]
y = copy.deepcopy(x)
x[1][1]=0
x
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]
y
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
作业:
1、注意:单纯变量的引用和列表中变量的引用是有区别的
2、创建一个 88 x 88 的随机整数矩阵(二维列表),然后匹配用户输入的整数是否与其中某元素相等,如果相等则打印其行号和列号import random
a = [0]*88
for i in range(88):
a[i] = [0]*88
for i in range(88):
for j in range(88):
b = random.randint(0,1024)
a[i][j] = b
c = int(input("请输入整数"))#关键是input的输入值是默认是字符串类型的,要转换为int
for i in range(88):
for j in a[i]:
if c==j:
print(a.index(a[i]),a[i].index(j),sep=" ")
更简洁的方法:for i in range(88):
for j in range(88):
if a[i][j]==c:
print(i,j,sep=" ")
3、假设给定一个 m * n 的矩阵(矩阵中数值的取值范围是 0~1024,且各不相同),如果某一个元素的值在同一行的所有元素中最小,并且在同一列的所有元素中最大,那么该元素便是幸运数字,给定矩阵如a所示a = [[10, 36, 52],
[33, 24, 88],
[66, 76, 99]]
b=[0]*3
x=[0]*3
for i in range(3):
x=a[i]
x.sort() #这里直接将x进行从小到大排序,若想进一步赋值给其他列表,则需在下一步进行
c=a[i].index(x[0])
d= [a[0][c], a[1][c] ,a[2][c]]
d.sort()
d.reverse()
if d[0]== x[0]:
print(x[0])
|
|