15671963473 发表于 2023-11-2 16:52:33

python二维列表

在编写代码时我用以下方法编写的随机二维列表里的产生一维列表全是相同的,这是为什么?
importrandom
# 创建随机数列表
matrix = []
a = *88
for i in range(88):
    for j in range(88):
      a = 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:
            print(i,j)

isdkz 发表于 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]:
            print(i,j)

在此修复后,您将获得一个88x88的随机二维列表,并且您可以正确地在其中搜索匹配的数字。

Mike_python小 发表于 2023-11-2 16:54:05

问题分析:

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

修改后的代码如下:


import random

# 创建随机数列表
matrix = []
for i in range(88):
    a =
    matrix.append(a)

print(matrix)

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


代码解释:

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

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

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

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

欧拉计划 发表于 2023-11-2 17:22:56

matrix.append(a) 这句错了
页: [1]
查看完整版本: python二维列表