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