鱼C论坛

 找回密码
 立即注册
查看: 2584|回复: 4

[已解决]大佬求救

[复制链接]
发表于 2022-10-2 16:02:48 | 显示全部楼层 |阅读模式

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

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

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)
        
最佳答案
2022-10-2 17:27:43

因为列表 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-2 16:47:26 | 显示全部楼层
clear好像不行  你直接rythm = 【】
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-2 16:53:25 | 显示全部楼层
深谙流年 发表于 2022-10-2 16:47
clear好像不行  你直接rythm = 【】

谢谢你
我再等等看有没有人给我解释下原理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-2 17:10:27 | 显示全部楼层
G-Bule 发表于 2022-10-2 16:53
谢谢你
我再等等看有没有人给我解释下原理

好像跟id有关
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-2 17:27:43 | 显示全部楼层    本楼为最佳答案   

因为列表 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-25 21:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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