python return list method takes index as arguments

2024-10-01 02:19:43 发布

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

我想知道下面的伪代码是否可能:

def getLst(index = :):    
    lst = [1, 2, 3, 4, 5, 6, 7]
    return lst[index]


print getLst()
>> [1, 2, 3, 4, 5, 6, 7]

print getLst(2)
>> 3


print getLst(2:-2)
>> [3, 4, 5]

很明显我有个语法错误。在

方法正在at类中用于返回私有列表。在

我知道下面的例子是可能的,而且它可能更正确(更容易阅读/理解代码),但是由于我有了做第一个例子的想法,所以我不可能知道如何使第一个例子起作用。在

^{pr2}$

Tags: 方法代码列表indexreturndefat例子
1条回答
网友
1楼 · 发布于 2024-10-01 02:19:43

2:-2表示法是特定于数组订阅(即a[2:-2]表达式)的。如果你想接受这个符号,你能做的最接近的事情就是实际使用整个符号。这可以通过重载__getitem__方法来实现(如果需要负数,也需要重载__len__)。在

class GetList:
    def __init__(self, l):
        self.l = l

    def __getitem__(self, x):
        return self.l[x]

    def __len__(self):
        return len(self.l)

实际上,a[2:4]a[slice(2,4,None)]的语法糖,a[2:-2]是{}的语法糖。当然,您可以通过使用x.startx.stop和{}(假设这是一个片段)来检查slice,并在此基础上做任何您想做的事情。在

如果您想使用decorator来启用使用下标表示法调用函数:

^{pr2}$

请注意,在片段中允许负数stop的黑客做法是伪造长度为零的,这将导致getLst[2:-2]将导致参数为slice(2,-2,None),这对于一个没有返回任何内容的列表来说是无稽之谈(相反,您必须手动处理一个索引为负的情况)。在

相关问题 更多 >