在列表中添加一个列表,然后在刚刚添加的列表中添加另一个列表

2024-07-03 08:10:57 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上,我尝试使用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 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, fun]]]]

所以我不断地在我现在的名单上添加一个名单,如果这有意义的话


Tags: lambda函数编码returnfunctionatencodeint
1条回答
网友
1楼 · 发布于 2024-07-03 08:10:57

[fun, [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))

输出

[<function <lambda> at 0x7fb72267d710>, [<function <lambda> at 0x7fb72267d710>, [<function <lambda> at 0x7fb72267d710>, [<function <lambda> at 0x7fb72267d710>, <function <lambda> at 0x7fb72267d710>]]]]

[fun, [fun, [fun, [fun]]]]输出类型尝试以下操作:

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>]]]]

相关问题 更多 >