|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
问题: 创建一个 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[x][y] == target:
print(x,y)
因为列表 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[x][y] == target:
- print(x, y)
复制代码
|
|