我正在阅读如何在python中声明矩阵,我发现了这个问题How to define two-dimensional array in python
它与我一起工作,但我理解这里所做的部分,我不理解的是两个循环中“for”之前的参数...所以我去我的终端并测试其中的部分内容一个接一个,所以当我输入:
0 for x in range(w):
我收到:
文件“< stdin>”,第1行
所以我试试:
[0 for x in range(w)] for y in range(h):
得到:
文件“< stdin>”,第1行 对于范围(h)中的y,[0表示范围(w)中的x]:
所以我试试:
[0 for x in range(w)]
和
[[0 for x in range(w)] for y in range(h)]
它的工作......
那么为什么循环工作时我放括号而没有括号?
提前致谢。
答案 0 :(得分:1)
是python中的列表理解。类似的,也有理解,词典理解。它使用for
循环中的元素来构造列表。如
>>> [2*i for i in range(10)]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
>>> [i for i in range(10) if i % 2 == 1]
[1, 3, 5, 7, 9]
>>> [0 for _ in range(10)]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>> [[i for i in range(j)] for j in range(5)]
[[], [0], [0, 1], [0, 1, 2], [0, 1, 2, 3]]
>>> {i : chr(65+i) for i in range(5)}
{0: 'A', 1: 'B', 2: 'C', 3: 'D', 4: 'E'}
答案 1 :(得分:1)
您需要括号,以便python解释器以正确的顺序处理括号内的操作。否则,语句没有被正确解释。
答案 2 :(得分:0)
您正在查看list comprehension(请查看5.1.4。链接的嵌套列表理解)。可以实现相同的任务using generator expression,但不涉及括号,但生成器不会创建列表。