Re: [問題] for迴圈問題
※ 引述《WaiTingKuo (:!)》之銘言:
: In [12]: a = [1, 2, 3, 4, 5, 6]
: In [13]: for x, y, in zip(*[iter(a)]*2):
: ....: print x, y
: ....:
: 1 2
: 3 4
: 5 6
推
07/12 00:55,
07/12 00:55
你的運算優先權錯了 =p
a 是 list (i.e. a 是 iterable)
iter(a) 會得到 a 的 iterator
[iter(a)] 就包成一個單一元素的 list
[iter(a)] * 2 會得到一個有兩個元素的 list(而且兩個元素會相同)
*[iter(a)] * 2 會把這個 list 展開成 zip 的兩個參數
事實上 zip(*[iter(a)]*2) 就等同於
a_iter = iter(a)
zip(a_iter, a_iter)
事實上由於 iter 是回傳 reference, zip(iter(a), iter(a)) 也完全對等
如果是我的話應該會這樣寫, 我個人很討厭 list 乘法...
用 iter 的好處是不用複製一個 list, 也不會需要大量 random access
所以效率會比較好
--
「我最想要的同伴嘛,首先是要笑口常開,其次是我們能永遠不會發生誤會。
如果這些都能辦到的話,嗯,如果他是世界上第一流的橋手,也還不錯。」
-- 班尼多‧加羅素,前義大利藍隊成員
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.81.146
※ 編輯: uranusjr 來自: 114.32.81.146 (07/12 01:34)
推
07/12 02:32, , 1F
07/12 02:32, 1F
→
07/13 16:35, , 2F
07/13 16:35, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
問題
4
5
以下文章回應了本文:
問題
1
3
完整討論串 (本文為第 4 之 7 篇):
問題
2
4
問題
1
2
問題
1
3
問題
1
2
問題
4
5
問題
1
4