我想知道下面的伪代码是否可能:
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}$
2:-2
表示法是特定于数组订阅(即a[2:-2]
表达式)的。如果你想接受这个符号,你能做的最接近的事情就是实际使用整个符号。这可以通过重载__getitem__
方法来实现(如果需要负数,也需要重载__len__
)。在实际上,}的语法糖。当然,您可以通过使用}(假设这是一个片段)来检查
a[2:4]
是a[slice(2,4,None)]
的语法糖,a[2:-2]
是{x.start
、x.stop
和{slice
,并在此基础上做任何您想做的事情。在如果您想使用decorator来启用使用下标表示法调用函数:
^{pr2}$请注意,在片段中允许负数
stop
的黑客做法是伪造长度为零的,这将导致getLst[2:-2]
将导致参数为slice(2,-2,None)
,这对于一个没有返回任何内容的列表来说是无稽之谈(相反,您必须手动处理一个索引为负的情况)。在相关问题 更多 >
编程相关推荐