鱼C论坛

 找回密码
 立即注册
查看: 1610|回复: 3

[已解决]python二维列表

[复制链接]
发表于 2023-11-2 16:52:33 | 显示全部楼层 |阅读模式

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

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

x
在编写代码时我用以下方法编写的随机二维列表里的产生一维列表全是相同的,这是为什么?
import  random
# 创建随机数列表
matrix = []
a = [0]*88
for i in range(88):
    for j in range(88):
        a[i] = random.randint(0, 1024)
    matrix[i].append(a)
print(matrix)
# 匹配用户输入数据
numbers = int(input("请输入一个数:"))
for i in range(88):
    for j in range(88):
        if numbers == matrix[i][j]:
            print(i,j)

最佳答案
2023-11-2 16:54:05
问题分析:

在你的代码中,二维列表 matrix 中的每个元素都指向相同的一维列表 a。这意味着当你修改一个 a 元素时,所有 matrix 列表中的对应位置都会被修改。因此,在你的代码中,每个子列表都包含了相同的一维列表,导致它们的值都相同。

修改后的代码如下:
import random# 创建随机数列表matrix = []for i in range(88):    a = [random.randint(0, 1024) for j in range(88)]    matrix.append(a)print(matrix)# 匹配用户输入数据numbers = int(input("请输入一个数:"))for i in range(88):    for j in range(88):        if numbers == matrix[i][j]:            print(i, j)
代码解释:

1. 在循环生成二维列表 matrix 的时候,每次要重新创建一个新的一维列表 a,而不是多次使用相同的 a
2. 使用列表推导式创建一维列表 a,以避免在循环中手动添加元素。

这样,你就可以得到一个正确的二维列表,每个子列表都包含随机生成的不同一维列表中的随机整数。

希望这个回答能够帮助到你!如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-2 16:52:42 | 显示全部楼层
您的代码中有一个问题,即在创建二维列表时没有为每个子列表分配空间。因此,当您尝试将值附加到子列表时,会出现IndexError异常。此外,您将相同的一维列表附加到每个子列表中,这会导致所有子列表都具有相同的值。

以下是修复代码的示例:

import random

# 创建随机数列表
matrix = []
for i in range(88):
    a = []
    for j in range(88):
        a.append(random.randint(0, 1024))
    matrix.append(a)
print(matrix)

# 匹配用户输入数据
numbers = int(input("请输入一个数:"))
for i in range(88):
    for j in range(88):
        if numbers == matrix[ i][j]:
            print(i,j)

在此修复后,您将获得一个88x88的随机二维列表,并且您可以正确地在其中搜索匹配的数字。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-2 16:54:05 | 显示全部楼层    本楼为最佳答案   
问题分析:

在你的代码中,二维列表 matrix 中的每个元素都指向相同的一维列表 a。这意味着当你修改一个 a 元素时,所有 matrix 列表中的对应位置都会被修改。因此,在你的代码中,每个子列表都包含了相同的一维列表,导致它们的值都相同。

修改后的代码如下:
import random# 创建随机数列表matrix = []for i in range(88):    a = [random.randint(0, 1024) for j in range(88)]    matrix.append(a)print(matrix)# 匹配用户输入数据numbers = int(input("请输入一个数:"))for i in range(88):    for j in range(88):        if numbers == matrix[i][j]:            print(i, j)
代码解释:

1. 在循环生成二维列表 matrix 的时候,每次要重新创建一个新的一维列表 a,而不是多次使用相同的 a
2. 使用列表推导式创建一维列表 a,以避免在循环中手动添加元素。

这样,你就可以得到一个正确的二维列表,每个子列表都包含随机生成的不同一维列表中的随机整数。

希望这个回答能够帮助到你!如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-2 17:22:56 | 显示全部楼层
matrix[i].append(a) 这句错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 13:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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