|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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])
复制代码 |
|