作者Neverfor (yorker)
看板Python
標題[問題] list的iterator應用問題
時間Sat Jul 2 05:53:25 2016
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
--
Sent from my Windows
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.82.77.154
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1467410007.A.1B9.html
1F:→ Neverfor: element 打錯@@07/02 05:54
2F:推 mars90226: 這是list comprehension,用來產生list07/02 07:50
3F:→ mars90226: 1.對 2.錯,是for y中的x是前面的x07/02 07:52
※ 編輯: Neverfor (111.82.77.154), 07/02/2016 21:55:01
4F:推 adgjl5645: 這邊用的是小掛號,應該是產生generator而不是list07/02 22:28
大致上瞭解了!!感謝!!
不過還有個問題..
range(0)跟range(0,0)都是空集合嗎?
※ 編輯: Neverfor (111.82.77.154), 07/03/2016 03:42:27
5F:→ uranusjr: range(0) == range(0, 0), 但是空 list 不是集合 (set) 07/03 09:47
6F:→ uranusjr: 另外在 Python 3 它們也會是 generator 07/03 09:48
7F:推 adgjl5645: 在 python2 裡的話 range 是 list, xrange 是generator 07/04 03:07
8F:→ adgjl5645: range(0) 跟 range(0,0) 會是一樣的 07/04 03:09