Re: [問題] LIST 遞加/乘某連繼數值

看板Python作者 (GTX)時間14年前 (2011/12/23 18:38), 編輯推噓0(004)
留言4則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《zha0 (這個帳號是掛網用)》之銘言: : 標題: [問題] 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] : >>> 可以考慮用lambda: r = '12345678' print [i for i in imap(lambda x: int(x) + 1, list(r))] #用map or itertools.imap >>>[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] : 依樣畫葫蘆 r = '12345678' print [i for i in imap(lambda x: int(x) ** 2, list(r))] >>>[1, 4, 9, 16, 25, 36, 49, 64] -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.238.231

12/24 03:05, , 1F
這樣子的寫法反而更不易閱讀、更不好懂。這樣寫:
12/24 03:05, 1F

12/24 03:06, , 2F
print [int(x)+1 for x in '12345678'] 是不是比較好?
12/24 03:06, 2F

12/28 10:33, , 3F
我的作法list(r)是多餘的,r本來就是list的一種
12/28 10:33, 3F

12/28 15:55, , 4F
他不是list的一種,應該說他是iterative的
12/28 15:55, 4F
文章代碼(AID): #1Ez5ehdn (Python)
討論串 (同標題文章)
文章代碼(AID): #1Ez5ehdn (Python)