看板 Python 關於我們 聯絡資訊
day831231:不用迴圈的話 遞迴可以嗎~ 05/09 00:07
收到! XDDD # def f(L, N=set()): # it's bad def f(L, N=None): # print L,f.N if N is None: N = set() if not L: return [] elif L[0] in N: return f(L[1:],N) elif L[0] in L[1:]: return f(L[1:],N|{L[0]}) else: return [L[0]]+f(L[1:],N) if __name__=='__main__': A = [9,5,5,4,7,6,4,1,2,0,10,9,7] print f(A) # [6, 1, 2, 0, 10] -- 當然是完全沒有增進效率.... ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.27.47 ※ 文章網址: http://www.ptt.cc/bbs/Python/M.1399823296.A.D3C.html ※ 編輯: apua (140.113.27.47), 05/11/2014 23:49:22 ※ 編輯: apua (140.113.27.47), 05/11/2014 23:54:02
ccwang002:apua 太猛了! 05/12 02:24
※ 編輯: apua (140.113.136.219), 05/12/2014 11:10:39
apua:本來用了 f.N 的方式, 因為會改變狀態, 作法很差, 所以改掉 05/12 11:11
ya790206:def f(L, N=set()): 的 N=set() 不是很好的寫法 05/12 21:25
ya790206:理由詳見http://goo.gl/aJWA0T 05/12 21:27
謝謝提醒, 已修改~ ※ 編輯: apua (140.113.200.180), 05/13/2014 23:37:02
amozartea:這根本就把集合論學透了才想得到這招 05/15 20:38