Re: [問題] 卡關了...

看板Python作者 (York)時間18年前 (2006/12/15 09:20), 編輯推噓3(305)
留言8則, 3人參與, 最新討論串5/5 (看更多)
※ 引述《ibmibmibm (殺.人.鬼)》之銘言: : More pythontic way: : : import random : : times = 100 : history = [random.choice(('head', 'tail')) for i in range(times)] : for i in history: : print i : print 'head:', history.count('head') : print 'tail:', history.count('tail') : Freak1033:但是這樣寫吃 linear space 喔. XD 11/01 06:10 : jtmh:times 不大的前提下,我覺得程式看起來清楚比較重要耶!? 11/01 16:05 : jtmh:不然這樣寫不僅記憶體吃得多,就連執行速度也比較慢啊 @@? 11/01 16:06 要省記憶體,只要小小修改: import random N = 100 hist = (random.choice(('H', 'T')) for i in xrange(N)) m = {'H':0, 'T':0} for e in hist: m[e] += 1 print e print 'head: ', m['H'] print 'tail: ', m['T'] -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.59.12.144 ※ 編輯: ykjiang 來自: 61.59.12.144 (12/15 09:51)

12/15 14:49, , 1F
這樣還是 linear space 啊. XD
12/15 14:49, 1F

12/15 23:56, , 2F
list comprehensions [...] 跟 (...) 不同,
12/15 23:56, 2F

12/15 23:58, , 3F
[...] 會生成一個 list , (...) 則傳回 generator
12/15 23:58, 3F

12/15 23:59, , 4F
道理類似 range(.) 跟 xrange(.) 的不同...
12/15 23:59, 4F

12/16 00:04, , 5F
如果還是不知道其花費 space 是 constant 的,
12/16 00:04, 5F

12/16 00:05, , 6F
請複習 generator 及 g = (..for...) 的用法
12/16 00:05, 6F

12/16 00:43, , 7F
原來 list comprehension 有 (...) 這樣的寫法呀 o_O!
12/16 00:43, 7F

12/16 00:43, , 8F
查了後發現是 2.4 版提供的,又學到一招了 :p
12/16 00:43, 8F
文章代碼(AID): #15WVXQN6 (Python)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 5 篇):
5
8
1
1
文章代碼(AID): #15WVXQN6 (Python)