Re: [問題]不用for迴圈尋找陣列中只出現過一次的資料

看板Python作者 (Apua)時間10年前 (2014/05/11 23:48), 10年前編輯推噓3(302)
留言5則, 4人參與, 最新討論串2/5 (看更多)

05/09 00:07,
不用迴圈的話 遞迴可以嗎~
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

05/12 02:24, , 1F
apua 太猛了!
05/12 02:24, 1F
※ 編輯: apua (140.113.136.219), 05/12/2014 11:10:39

05/12 11:11, , 2F
本來用了 f.N 的方式, 因為會改變狀態, 作法很差, 所以改掉
05/12 11:11, 2F

05/12 21:25, , 3F
def f(L, N=set()): 的 N=set() 不是很好的寫法
05/12 21:25, 3F

05/12 21:27, , 4F
05/12 21:27, 4F
謝謝提醒, 已修改~ ※ 編輯: apua (140.113.200.180), 05/13/2014 23:37:02

05/15 20:38, , 5F
這根本就把集合論學透了才想得到這招
05/15 20:38, 5F
文章代碼(AID): #1JRvl0qy (Python)
討論串 (同標題文章)
文章代碼(AID): #1JRvl0qy (Python)