我想了解多维列表在 python 中的工作原理

I want to understand how multi dimensional lists work in python

我刚刚开始学习 python 并且正在寻找构建多维列表的解决方案。我在这个网站上找到了下面的解决方案并且它有效但我想了解它为什么有效。

>>> list = [[0 for x in range(4)] for x in range(4)]

我了解循环的工作原理,并了解如何在 for 循环下打印或进行一些计算,但这里没有 : 用于告诉 for 循环到 "do" 某些东西。我的第二个问题是这种编写方式实际上是如何创建输出的?这只是内置到语言中吗?

[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

提前致谢!

埃里克

这称为列表理解,您可以动态填充列表而无需使用追加方法。事实上,这个符号的操作几乎和写的一样。

list = [[0 for x in range(4)] for x in range(4)]

# 1. make 4 zeros, slap brackets around it
# 2. make 4 of these lists put it in a list

1.

您发布的代码执行以下操作:

首先,for x in range(4)表示前面的内容重复四次。事实上,它前面有一些东西意味着冒号是不必要的,但这只适用于列表。您也可以尝试:[x for x in range(4)],这会给您 [0, 1, 2, 3]。如果你迭代其他列表,你可以尝试:

words = ["Bob", "Jane", "House", "Cat"]
words_with_lengths = [[word, len(word)] for word in words]

此行为也适用于其他关键字,例如 if。例如,您可以做 [x for x in range(10) if x > 6](尽管那很愚蠢。)

通过在前面加上一个零并将其括在方括号中,就创建了一个列表。因此,它创建了一个包含四个零的列表 (--> [0 for x in range(4)])

然后需要四次 (... for x in range(4)]),创建您链接的列表。

2.

您在 python 控制台中键入的任何内容都会自动打印输出,前提是它 returns 某些内容。

这与 python 脚本不同。如果您 运行 从脚本发布的代码,您实际上看不到任何输出,因为此行为不会在脚本中复制。