理解python中列表数组的创建

时间:2017-03-29 03:10:44

标签: python python-3.x for-loop

我正在阅读如何在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)] 

它的工作......

那么为什么循环工作时我放括号而没有括号?

提前致谢。

3 个答案:

答案 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. https://www.python.org/dev/peps/pep-0202/
  2. https://www.python.org/dev/peps/pep-0274/

答案 1 :(得分:1)

您需要括号,以便python解释器以正确的顺序处理括号内的操作。否则,语句没有被正确解释。

答案 2 :(得分:0)

您正在查看list comprehension(请查看5.1.4。链接的嵌套列表理解)。可以实现相同的任务using generator expression,但不涉及括号,但生成器不会创建列表。