繁体   English   中英

在python中递归扩展列表

[英]Recursively extending a list in python

我一直在尝试使我的代码更具pythonic风格,并且想知道是否有某种方法可以使这一行成为现实。

w=[1, 0, 0, 0, 0, 0, 0, 0] # just an example
for i in range(170):
    w.append(w[-2]^w[-3]^w[-4]^w[-8])

我尝试使用lambda表示法并得到了它,但长度大于50左右无效。

[(lambda a:lambda v:a(a,v))(lambda s,x:1 if x==0 else (0 if x < 8 else s(s,x-2)^s(s,x-3)^s(s,x-4)^s(s, x-8)))(k) for k in range(170)]

我也尝试使用列表递归:

(lambda n: (lambda f, n: f(f, n))(lambda f, n: f(f, n-1)+[f(f, n-1)[-2]^f(f, n-1)[-3]^f(f, n-1)[-4]^f(f, n-1)[-8]] if n > 0 else [1,0,0,0,0,0,0,0], n))(20)

我认为这两种方法都可以与备忘录一起使用,但是我不确定如果可能的话如何直接进行内联。

我认为您拥有的没问题,但也许可以将其变成类似以下内容的生成器:

def running_xor(w, n):
    for i in range(n):
        yield w[-2]^w[-3]^w[-4]^w[-8]

w.extend(running_xor(w, 170))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM