可以在括号外使用python的切片符号吗?
问题描述:
在括号中,蟒蛇的切片简写自动生成切片对象的元组:可以在括号外使用python的切片符号吗?
class Foo(object):
def __getitem__(self, key):
print key
Foo()[1::, 2:20:5]
这将打印(slice(1, None, None), slice(2, 20, 5))
。但据我所知,这种简写不适用于括号之外。
有没有什么方法可以在其他上下文中使用切片速记?我可以定义一个虚拟对象,它只是返回传递给__getitem__
的任何东西 - 这至少会给我一种使用简写语法生成片元组的方法。有更多pythonic的方式?
答
你看到打印出的内容其实是一个很好的线索。您可以直接通过slice()全局函数创建切片对象。这些可以被传递用于从列表中索引。
s = slice(1, 10, 2)
numbers = list(range(20))
print numbers[s]
print numbers[1:10:2]
这将打印两次相同的结果[1,3,5,7,9]。
切片实例有一些属性和方法。你可以看看帮助(切片)看更多。
OP想要使用括号来生成切片对象。 – 2012-08-16 04:29:31