努力版迪迦 发表于 2024-3-5 11:11:55

pothon小白求助


triangle = []
for i in range(10):
    triangle.append([])
    for j in range(10):
      triangle.append(0)
这个 triangle.append(0) 是将二维列表中i行所有值初始化为0的意思嘛?
那为什么不增添一个将j也初始化为0的代码呢
一个i就能管住i和j两个变量了吗

FishC 发表于 2024-3-5 11:12:13

首先,你的代码中有一些问题。首先,你没有给`triangle`赋值一个空列表,所以在使用`append`方法之前,应该将`triangle`设置为一个空列表。其次,在每次迭代时,你需要在`append`方法中指定要添加的元素。

关于你的问题,`triangle.append(0)`的作用是将一个整数0添加到列表`triangle`的末尾。它并不会将整个i行初始化为0,而只是在每一行的末尾添加一个0。这样,每一行就会以0结尾。

如果你想将每一行都初始化为0,可以在外层循环内添加一个新的空列表,并将其作为整行添加到`triangle`中。如下所示:

triangle = []
for i in range(10):
    row = []
    for j in range(10):
      row.append(0)
    triangle.append(row)

这段代码首先创建一个空列表`row`,然后在内层循环中将0添加到`row`。在内层循环结束后,将完整的`row`添加到`triangle`中。这样就可以将每一行都初始化为0了。

对于你的第二个问题,一个变量是可以同时管理多个值的。在这里,`i`确实可以同时控制内层循环的`j`变量。内层的`for j in range(10)`循环会在每次外层循环迭代时都执行10次,所以`j`的取值是从0到9。这是因为每一次外层循环迭代时,内层循环会重新开始,并从0开始计数。

希望我的解答能帮到你!如有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

不二如是 发表于 2024-3-5 15:56:26

问题出在了第二个for循环内部,应该使用triangle.append(0),而不是triangle.append(0)。

因为triangle.append(0)将会在triangle列表的末尾添加一个新的0,而不是在子列表中添加。

正确的初始化应该是在每一个子列表中添加一个0。

此外,for j in range(10):循环是用来初始化第i行的10个元素,而不是初始化j。

i和j是两个独立的变量:i控制行,j控制列。

正确的代码应该如下:

triangle = []
for i in range(10):
    # 添加一个新的空列表,代表一个新的行
    triangle.append([])
    for j in range(10):
      # 初始化当前行的每个列元素为0
      triangle.append(0)
这样,triangle就是一个10x10的二维列表,其中每个元素都被初始化为0了。

i是行索引,j是列索引,两者都需要分别控制。
页: [1]
查看完整版本: pothon小白求助