Re: [问题]不用for循环寻找阵列中只出现过一次的资料

楼主: apua (Apua)   2014-05-11 23:48:13
→ 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]
作者: day831231 (下个地点)   2014-05-09 00:07:00
不用循环的话 递回可以吗~
作者: ccwang002 (亮)   2014-05-12 02:24:00
apua 太猛了!
楼主: apua (Apua)   2014-05-12 11:11:00
本来用了 f.N 的方式, 因为会改变状态, 作法很差, 所以改掉
作者: ya790206 (残云夺月)   2014-05-12 21:25:00
def f(L, N=set()): 的 N=set() 不是很好的写法理由详见http://goo.gl/aJWA0T
作者: amozartea (自行车单)   2014-05-15 20:38:00
这根本就把集合论学透了才想得到这招

Links booklink

Contact Us: admin [ a t ] ucptt.com