colinl 发表于 2021-6-24 17:30:50

求助一个循环问题

以下是我写的关于一个二元矩阵列表生成的,但是最运行矩阵的所有行都会被循环最后的temp覆盖。

i=int(input("请输入矩阵的行数:"))
j=int(input("请输入矩阵的列数:"))
temp=*j
matrix=*i
for a in range(i):
    for b in range(j):
      temp=a*j+b
    print(temp)
    matrix=temp
print(matrix)

比如运行后是这样的:

请输入矩阵的行数:5
请输入矩阵的列数:6





[, , , , ]

其实我的目标是最后应该输出[,,,,]

xiaosi4081 发表于 2021-6-24 17:43:47

本帖最后由 xiaosi4081 于 2021-6-24 17:58 编辑

可以直接定义一个空列表,再用append方法将值加入列表

注:每次执行外面这层循环时要把temp清空

i=int(input("请输入矩阵的行数:"))
j=int(input("请输入矩阵的列数:"))
temp = []
matrix = []
for a in range(i):
        temp = []
        for b in range(j):
                temp.append(a*j+b)
        matrix.append(temp)
print(matrix)

nahongyan1997 发表于 2021-6-24 17:48:57

我满足了你的要求,但是跟你的逻辑完全不一样啊。
i=int(input("请输入矩阵的行数:"))
j=int(input("请输入矩阵的列数:"))

number = 0
result = []
for a in range(j):
    result.append([])
    for b in range(i):
      result.append(number)
      number += 1

print(result)

灰晨 发表于 2021-6-24 17:51:26

i=int(input("请输入矩阵的行数:"))
j=int(input("请输入矩阵的列数:"))
matrix=[]
for a in range(i):
    temp = []
    for b in range(j):
      temp.append(a*j+b)
    print(temp)
    matrix.append(temp)
print(matrix)

你这是列表浅拷贝,深拷贝的问题,具体自己去搜一搜

nahongyan1997 发表于 2021-6-24 17:56:39

xiaosi4081 发表于 2021-6-24 17:43
可以直接定义一个空列表,再用append方法将值加入列表

注:每次执行外面这层循环时要把temp清空

还是你的方法好

z5560636 发表于 2021-6-25 13:01:04

不用这么麻烦,我来教你一行代码搞定{:10_313:}

i = int(input("矩阵行数"))
j = int(input("矩阵列数"))
a1 = [ for lie in range(i)]
# a1 = np.array([ for i in range(3)])
print(a1)

龙舞九天 发表于 2021-6-26 06:25:16

{:5_95:}
页: [1]
查看完整版本: 求助一个循环问题