鱼C论坛

 找回密码
 立即注册
查看: 2052|回复: 0

[学习笔记] 零py-(ep-14)

[复制链接]
发表于 2023-8-10 11:12:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Nicole37 于 2023-8-10 11:12 编辑

列表5:
1、变量之间直接赋值:你变我也变
注意python中变量赋值的关系,给一个变量赋值,是使该变量引用一个固定值,变量之间直接赋值时,赋值的是原变量的引用
  1. x = [1,2,3]
  2. y = x
  3. x[1] = 1
  4. x
  5. [1, 1, 3]
  6. y
  7. [1, 1, 3]
复制代码

其中x更改值2以后,表示所引用的数值发生了更改,所以y指向的值也跟着变
屏幕截图 2023-08-08 170102.png
2、变量之间通过copy来赋值:你变我不变
利用copy进行变量之间的赋值,赋值的是整个列表对象(仅对一维列表有效)
  1. x = [4,5,6]
  2. y = x.copy()
  3. x[1] = 8
  4. x
  5. [4, 8, 6]
  6. y
  7. [4, 5, 6]
复制代码

屏幕截图 2023-08-08 170846.png
3、切片赋值与copy作用类似
  1. x = [4,5,6]
  2. y = x[:]
  3. x[1]=1
  4. x
  5. [4, 1, 6]
  6. y
  7. [4, 5, 6]
复制代码

3、上述为浅拷贝,仅适用于一维列表,拷贝的只是外层对象,当出现列表嵌套时,拷贝的只是其引用
4、深拷贝:使用copy模块 ,拷贝的是内外所有嵌套的列表
  1. import copy #导入copy模块
  2. #浅拷贝
  3. x = [[1,2,3],[4,5,6],[7,8,9]]
  4. y = copy.copy(x) #表示引用copy模块中的copy函数
  5. x[1][1] = 0
  6. x
  7. [[1, 2, 3], [4, 0, 6], [7, 8, 9]]
  8. y
  9. [[1, 2, 3], [4, 0, 6], [7, 8, 9]]
  10. #深拷贝deepcopy
  11. x = [[1,2,3],[4,5,6],[7,8,9]]
  12. y = copy.deepcopy(x)
  13. x[1][1]=0
  14. x
  15. [[1, 2, 3], [4, 0, 6], [7, 8, 9]]
  16. y
  17. [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
复制代码

作业:
1、
  1. x = 1
  2. y = x
  3. x = 2
  4. y
  5. 1
复制代码

注意:单纯变量的引用和列表中变量的引用是有区别的
屏幕截图 2023-08-08 181823.png
2、创建一个 88 x 88 的随机整数矩阵(二维列表),然后匹配用户输入的整数是否与其中某元素相等,如果相等则打印其行号和列号
  1. import random
  2. a = [0]*88

  3. for i in range(88):
  4.     a[i] = [0]*88
  5.    
  6. for i in range(88):
  7.     for j in range(88):
  8.         b = random.randint(0,1024)
  9.         a[i][j] = b

  10.    
  11. c = int(input("请输入整数"))#关键是input的输入值是默认是字符串类型的,要转换为int

  12. for i in range(88):
  13.     for j in a[i]:
  14.         
  15.         if c==j:
  16.             print(a.index(a[i]),a[i].index(j),sep=" ")
复制代码

更简洁的方法:
  1. for i in range(88):
  2.     for j in range(88):
  3.         
  4.         if a[i][j]==c:
  5.             print(i,j,sep=" ")
复制代码

3、假设给定一个 m * n 的矩阵(矩阵中数值的取值范围是 0~1024,且各不相同),如果某一个元素的值在同一行的所有元素中最小,并且在同一列的所有元素中最大,那么该元素便是幸运数字,给定矩阵如a所示
  1. a = [[10, 36, 52],
  2.      [33, 24, 88],
  3.      [66, 76, 99]]
  4. b=[0]*3
  5. x=[0]*3
  6. for i in range(3):
  7.     x=a[i]

  8.     x.sort() #这里直接将x进行从小到大排序,若想进一步赋值给其他列表,则需在下一步进行

  9.     c=a[i].index(x[0])
  10.     d= [a[0][c], a[1][c] ,a[2][c]]
  11.     d.sort()
  12.     d.reverse()
  13.     if d[0]== x[0]:
  14.         print(x[0])
复制代码

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 12:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表