Python 将列表添加到列表中,然后将另一个列表添加到刚才添加的列表中
基本上,我试图通过使用lambda函数对int进行编码,并将它们分配到一个列表中 目前的执行情况:Python 将列表添加到列表中,然后将另一个列表添加到刚才添加的列表中,python,list,Python,List,基本上,我试图通过使用lambda函数对int进行编码,并将它们分配到一个列表中 目前的执行情况: succ = (lambda f: lambda n: f(n)) def encode(i): zeroList = [] secondaryList = [] encodedList = [succ] if i == 0: return zeroList else: x = i - 1 for x
succ = (lambda f: lambda n: f(n))
def encode(i):
zeroList = []
secondaryList = []
encodedList = [succ]
if i == 0:
return zeroList
else:
x = i - 1
for x in range(0, x):
secondaryList.append(succ)
encodedList.append(secondaryList)
return encodedList
因此encode(4)的输出当前为:
[<function <lambda> at 0x0000024D71943DC8>, [<function <lambda> at 0x0000024D71943DC8>, <function <lambda> at 0x0000024D71943DC8>, <function <lambda> at 0x0000024D71943DC8>]]
因此,如果有意义的话,我会继续向我当前所在的列表中添加一个列表。尝试此操作以获得
[fun,[fun,[fun,fun]]]
输出类型:
succ = (lambda f: lambda n: f(n))
def encode(i):
return [succ] + [encode(i-1)] if i>0 else succ
print(encode(4))
def encode(i):
return [succ] + [encode(i-1)] if i>1 else [succ]
print(encode(4))
输出:
[<function <lambda> at 0x7fb72267d710>, [<function <lambda> at 0x7fb72267d710>, [<function <lambda> at 0x7fb72267d710>, [<function <lambda> at 0x7fb72267d710>, <function <lambda> at 0x7fb72267d710>]]]]
[<function <lambda> at 0x7fb72267d710>, [<function <lambda> at 0x7fb72267d710>, [<function <lambda> at 0x7fb72267d710>, [<function <lambda> at 0x7fb72267d710>]]]]
输出:
[<function <lambda> at 0x7fb72267d710>, [<function <lambda> at 0x7fb72267d710>, [<function <lambda> at 0x7fb72267d710>, [<function <lambda> at 0x7fb72267d710>, <function <lambda> at 0x7fb72267d710>]]]]
[<function <lambda> at 0x7fb72267d710>, [<function <lambda> at 0x7fb72267d710>, [<function <lambda> at 0x7fb72267d710>, [<function <lambda> at 0x7fb72267d710>]]]]
[,[,[,[,[]]
您是否试图实现Church数字(在这种情况下,您对succ
的定义是错误的)?嗯,我被要求做的是f(n),[f(n),f(n)]等等,但它与Church类似。churchsucc是什么?是否有理由将succ
(或任何其他功能)存储在列表中?整个编码似乎基于列表中存储的内容的数量;甚至筑巢似乎也不相关。(为什么[fun][fun][fun,fun]]
而不是[fun,fun,fun]
?为什么[fun,fun]
而不是[fun][fun]
?)就我所知,没有真正的理由,只是一个练习。等等,似乎有一个问题,列表的末尾是重新运行(fun,fun]]),而不是(fun,[fun])有没有办法解决这个问题?@Lamebro1在你的问题中,你提到你希望输出像[fun,[fun,[fun,[fun,fun]]]
哦,我的糟糕!我本想写有趣的,有趣的-抱歉typo@Lamebro1检查更新的答案是否解决了您的问题。