我刚刚开始学习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
答案 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)
您发布的代码执行以下操作:
首先,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)]
),创建您链接的列表。
你在python控制台中输入的任何内容都会自动打印输出,因为它会返回一些内容。
这与python脚本不同。如果您要运行从脚本发布的代码,您实际上看不到任何输出,因为这种行为不会在脚本中复制。