grid = [['.', '.', '.', '.', '.', '.'],
['.', '0', '0', '.', '.', '.'],
['0', '0', '0', '0', '.', '.'],
['0', '0', '0', '0', '0', '.'],
['.', '0', '0', '0', '0', '0'],
['0', '0', '0', '0', '0', '.'],
['0', '0', '0', '0', '.', '.'],
['.', '0', '0', '.', '.', '.'],
['.', '.', '.', '.', '.', '.']]
def gridOutput(grid):
for s in range(len(grid[0])):
print()
for i in range(len(grid)):
print(grid[i][s],end='')
gridOutput(grid)
这是打印我希望打印的内容。它循环遍历每个列表的每个元素。像[0,1] [0,2] [0,3] [0,4] [0,5]等
但是我不知道代码是如何做到的。
range(len(grid[0])):
为什么在返回列表长度时使用len?而且我不知道[0]在做什么,如果我将其设置为9以下的任何其他整数,则其工作原理完全相同。
有人可以解释一下这是怎么回事,我已经尝试了两天,现在我需要一些指导。
答案 0 :(得分:1)
当您执行len(grid)
时,只会返回网格中有多少个列表或“行”的长度。但是,这并不能告诉您有关每个列表/行的长度的任何信息。要获取该信息,请访问列表并假设它们的长度相同,并获取该集合的长度。
len(grid[0])
将为您提供第一个列表的长度(在索引0处),该长度基本上是列数。
为什么将此传递到range(x)
调用中,是因为它将从您输入的任何内容从0
循环到x
。所以该循环将遍历所有外循环中各列的索引。
编辑: 要更改代码以使其支持网格中不同长度的子列表,您应该获取列表中每个子列表的长度,而不仅仅是第一个子列表的长度。为此,您必须像这样交换for循环的顺序:
def gridOutput(grid):
for i in range(len(grid)):
print()
for s in range(len(grid[i])): # Get length of current sub-list
print(grid[i][s], end='')
答案 1 :(得分:0)
它基本上从二维列表中打印出每个元素
grid [0] => ['。','。','。','。','。','。']
len(grid [0])=> 6
对于s在范围(len(grid [0]))=> s = 0,1 ...至5
您可以使用numpy清理代码
答案 2 :(得分:0)
len(grid[0])
获取网格第一行中的元素数。
在这种情况下,6 =>列数。
因此,第一个循环运行6次,并且每次迭代都会创建第二个循环:
for i in range(len(grid))
len(grid)
获取网格本身中的元素数,在您的情况下为9 =>行数。
快速步行:
在第一次迭代中s = 0,i = 0 =>第一行中的第一列
在第二次迭代中s = 0,i = 1 =>第二行中的第一列
等等...
希望这会有所帮助。