推 EntHeEnd:請問*[iter(a)]是什麼意思...@@? 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)
推 timTan:優先權的問題我也想了一下,這行 code 的濃度很高阿! 07/12 02:32
→ EntHeEnd:喔喔... 謝謝! 07/13 16:35