大佬求救
问题: 创建一个 88 x 88 的随机整数矩阵(二维列表),然后匹配用户输入的整数是否与其中某元素相等,如果相等则打印其行号和列号。要求1:随机整数取值范围 0~1024
要求2:需找出所有匹配的元素
我的代码:
import random
list =[]
rythm = []
for i in range(88):
for j in range(88):
a = random.randint(0,1024)
rythm.append(a)
list.append(rythm)
rythm.clear()
# 我在此插入print(list),却发现结果是二维空列表 (为什么啊?)
target = int(input("请输入目标整数:"))
for x in range(88):
for y in range(88):
if list == target:
print(x,y)
clear好像不行你直接rythm = 【】 深谙流年 发表于 2022-10-2 16:47
clear好像不行你直接rythm = 【】
谢谢你
我再等等看有没有人给我解释下原理 G-Bule 发表于 2022-10-2 16:53
谢谢你
我再等等看有没有人给我解释下原理
好像跟id有关
因为列表 rythm 的地址始终没变,你调用 clear 方法只是将列表中的元素清空了
而 rythm 列表还是这个列表,即可以理解为,你只是将一个盒子中的玩具全倒了,但是盒子还是这个盒子
而且你加入 list 中去的 rythm 都指向这个列表的地址,即你加入 list 列表中的 rythm 都是指这个盒子,自然显示的都为这个盒子中的结果,即全部都为空
将 rythm.clear() 这行代码改成 rythm = [] 即可,也就是每次重新创建列表(可以形象理解为新的盒子)加入 list 中
另外这里建议不要用 Python 的关键字进行变量的赋值,例如你这里,这样赋值就会导致 list 函数无法正常使用了
参考代码:
list = []
rythm = []
for i in range(88):
for j in range(88):
a = random.randint(0, 1024)
rythm.append(a)
list.append(rythm)
rythm = []
target = int(input("请输入目标整数:"))
for x in range(88):
for y in range(88):
if list == target:
print(x, y)
页:
[1]