在括号内,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方式吗?
答案 0 :(得分:2)
你看到的内容实际上是一个很好的线索。您可以直接通过slice()全局函数创建切片对象。然后可以将这些用于从列表中索引。
s = slice(1, 10, 2)
numbers = list(range(20))
print numbers[s]
print numbers[1:10:2]
这将打印两次相同的结果,[1,3,5,7,9]。
切片实例有一些属性和方法。您可以查看帮助(切片)以查看更多信息。
答案 1 :(得分:2)