当读official tutorial,我遇到了这个例子:了解列表综合Python中
>>> vec = [[1,2,3], [4,5,6], [7,8,9]]
>>> [num for elem in vec for num in elem]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
我不明白这一点,所以我做了一些实验:
>>> [num for elem in vec]
[9, 9, 9]
>>> [num for elem in (vec for num in elem)]
[9, 9, 9]
而且我甚至现在更困惑了!
所以,我的问题是:我应该以哪种顺序阅读列表理解?
编辑:我敢肯定,我还没有和值9任何位置定义的变量num
。
sunqingyaos-MacBook-Air:Documents sunqingyao$ python
Python 2.7.10 (default, Oct 23 2015, 19:19:21)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> num
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'num' is not defined
>>> vec = [[1,2,3], [4,5,6], [7,8,9]]
>>> [num for elem in vec for num in elem]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [num for elem in vec]
[9, 9, 9]
>>> [num for elem in (vec for num in elem)]
[9, 9, 9]
>>>
我也很困惑。 '[num for elem in vec]'应该抛出一个错误,因为'num'没有被定义。你确定你还没有在某个地方定义一个带有“9”值的'num'变量吗? –
@Rawing是的,我确定。看到我更新的问题 –