當讀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是的,我確定。看到我更新的問題 –