[問題] list的iterator應用問題

作者: Neverfor (八卦蟑螂)   2016-07-02 05:53:25
test=( (x, y) for x in range ( 3 ) for y in range (x) )
for x,y in test:
print(x,y)
output:
1 0
2 0
2 1
不好意思 看了很久想不出來程式碼第一行跟結果的關係QQ
這種用法是什麼意思呢?
想問
1. (x,y)是否代表 輸出的iterator 1個element是 (x,y)
2.迴圈看不太懂意思
前面的for x 是否是後面y range的x
作者: Neverfor (八卦蟑螂)   2016-07-02 05:54:00
element 打錯@@
作者: mars90226 (火星人)   2016-07-02 07:50:00
這是list comprehension,用來產生list1.對 2.錯,是for y中的x是前面的x
作者: adgjl5645 (今天不想哭)   2016-07-02 22:28:00
這邊用的是小掛號,應該是產生generator而不是list
作者: uranusjr (←這人是超級笨蛋)   2016-07-03 09:47:00
range(0) == range(0, 0), 但是空 list 不是集合 (set)另外在 Python 3 它們也會是 generator
作者: adgjl5645 (今天不想哭)   2016-07-04 03:07:00
在 python2 裡的話 range 是 list, xrange 是generatorrange(0) 跟 range(0,0) 會是一樣的

Links booklink

Contact Us: admin [ a t ] ucptt.com