[問題] list的iterator應用問題

看板Python作者 (yorker)時間9年前 (2016/07/02 05:53), 9年前編輯推噓3(305)
留言8則, 4人參與, 最新討論串1/2 (看更多)
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://www.ptt.cc/bbs/Python/M.1467410007.A.1B9.html

07/02 05:54, , 1F
element 打錯@@
07/02 05:54, 1F

07/02 07:50, , 2F
這是list comprehension,用來產生list
07/02 07:50, 2F

07/02 07:52, , 3F
1.對 2.錯,是for y中的x是前面的x
07/02 07:52, 3F
※ 編輯: Neverfor (111.82.77.154), 07/02/2016 21:55:01

07/02 22:28, , 4F
這邊用的是小掛號,應該是產生generator而不是list
07/02 22:28, 4F
大致上瞭解了!!感謝!! 不過還有個問題.. range(0)跟range(0,0)都是空集合嗎? ※ 編輯: Neverfor (111.82.77.154), 07/03/2016 03:42:27

07/03 09:47, , 5F
range(0) == range(0, 0), 但是空 list 不是集合 (set)
07/03 09:47, 5F

07/03 09:48, , 6F
另外在 Python 3 它們也會是 generator
07/03 09:48, 6F

07/04 03:07, , 7F
在 python2 裡的話 range 是 list, xrange 是generator
07/04 03:07, 7F

07/04 03:09, , 8F
range(0) 跟 range(0,0) 會是一樣的
07/04 03:09, 8F
文章代碼(AID): #1NTkPN6v (Python)
文章代碼(AID): #1NTkPN6v (Python)