关于python:从元组创建范围(slice.indices())

Create range from tuple (slice.indices())

在这个页面底部的python 2.3文档中,它说:

slice objects now have a method indices(length) which, given the length of a sequence, returns a (start, stop, step) tuple that can be passed directly to range()

以下是一些测试代码:

1
2
s = slice(0, 10)
r = range(s.indices(10))

它抛出一个TypeError

1
TypeError: range() integer end argument expected, got tuple.

为什么这个不行?

在我的用例中,range()在一个库中被调用,我需要提供一个这样使用的slice


试试这个:

1
r = range(*s.indices(10))

说明:range()期望最多有三个整数作为参数,因此我们需要使用splat运算符*解包indices()返回的整数元组。