调用类方法的方法…n层深

问题描述 投票:0回答:2

我正在尝试做等同于]的事情>

a=[[[[[1,2,3,4,5]]]]]
res = a.pop().pop().pop()

这将返回[[1, 2, 3, 4, 5]],但我希望能够执行弹出序列n次,所以类似a.pop() for _ in range(n)不能作为其在a对象而非a.pop()对象上的调用pop()起作用。

关于如何在python中完成此工作的任何线索,如果有的话,它将被称为什么以供将来参考?我能找到的最接近的东西是*运算符,用于将list()转换为单独的参数

我不想做这样的事情(忽略边缘情况):

tmp=a.pop()
for _ in range(n-1):
    tmp=tmp.pop()

我正在尝试做等同于a = [[[[[[1,2,3,4,5]]]]] res = a.pop()。pop()。pop()的操作[[1、2、3、4、5]],但是我希望能够执行弹出序列n次,所以类似...

python python-3.x methods repeat
2个回答
2
投票

这个很有趣,但是我不建议您做下面我写的事情,因为它不可读。

首先,您不想显式创建一个函数。您希望具有像表达式这样的列表理解功能。这是规则。


0
投票

您可以使用递归。此函数获取一个列表以及您要执行的弹出次数,然后返回结果

a = [[[[[1, 2, 3, 4, 5]]]]]

def pop_n(l, n):
    item = l.pop()
    if n < 2:
        return item
    else:
        return pop_n(item, n-1)

res = pop_n(a, 3)
print(res)
# [[1, 2, 3, 4, 5]]
© www.soinside.com 2019 - 2024. All rights reserved.