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