我想了解多维列表如何在python中工作

时间:2015-03-19 00:52:40

标签: python list for-loop

我刚刚开始学习python并且正在寻找构建多维列表的解决方案。我在这个网站上找到了以下解决方案并且它有效,但我想了解它的工作原理。

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

我理解循环如何工作,并获得如何在for循环下打印或进行一些计算,但是这里没有:用来告诉for循环“做”某事。我的第二个问题是这样写的方式实际上是如何产生输出的?这只是内置于语言中吗?

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

提前致谢!

Eric

2 个答案:

答案 0 :(得分:2)

这称为列表推导,您可以在不使用追加方法的情况下动态填充列表。实际上,这种符号的运作方式几乎与所写的一样。

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 :(得分:0)

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控制台中输入的任何内容都会自动打印输出,因为它会返回一些内容。

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