作者zha0 (這個帳號是掛網用)
站內Python
標題[問題] LIST 遞加/乘某連繼數值
時間Thu Dec 15 16:24:25 2011
>>> r = map(int, list('12345678'))
>>> r
[1, 2, 3, 4, 5, 6, 7, 8]
>>> r=[x+1 for x in r]
>>> r
[2, 3, 4, 5, 6, 7, 8, 9]
>>>
使用 for 可以一次處理 LIST 裡面的元素, 但 x+1 是固定的 .
如果今天我要
>>> r = map(int, list('12345678'))
>>> r
[1, 2, 3, 4, 5, 6, 7, 8]
>>> for i in range(8,1,-1):
r[i-1] = r[i-1]*i
>>> r
[1, 4, 9, 16, 25, 36, 49, 64]
請問這樣的話, 有沒有什麼比較好的寫法啊 , 不然覺得好像也是在寫 C ,
對不起一直問簡單的問題 T_T 只是想把基礎打好 .
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.121.210
→ mathfeel:r = [ v*(k+1) for k,v in enumerate(r) ] 12/15 16:45
→ mathfeel:話說回來,寫得像C又不是甚麼罪。 12/15 16:47
推 mikapauli:看不懂你想算什麼? 12/15 18:43
→ mikapauli:最後的結果不就是i**2? 12/15 18:44
→ mikapauli:然後為什麼要用range(8,1,-1) 12/15 18:46
推 darkgerm:enumerate() 好用耶!又學到一招了 之前如果想要 12/17 19:12
→ darkgerm:iterate 一個 list 又想要用 i 的話,都要用 range() 搭 12/17 19:12
→ darkgerm:lists[i] 感覺就不漂亮 12/17 19:13