是否有一种简单的单行方式来排除Python中范围函数的第一个元素?

只是为了澄清,该步骤也可以是否定的。我目前只是在做这个。

def excl_range(start, end, step):
    if step > 0:
        return range(start + 1, end, step)
    return range(start - 1, end, step)

我只是想知道是否有一种更干净的方法,最好不使用新函数来做到这一点。

回答

一个很少提及或使用的事实range是,它是Python 3 中的完整序列类型。这意味着您可以直接索引对象,包括切片:

range(...)[1:]

这相当于增加startstep。请注意,step 的符号无关紧要:start + step根据定义,第二个元素始终是:

range(start + step, end, step)

您还可以在迭代期间排除元素:

it = iter(range(...))
next(it)
for x in it:
    ...

这适用于任何可迭代对象,而不仅仅是range. 您可以使用以下方法进行等效操作itertools.islice

for x in islice(range(...), 1):
    ...


以上是是否有一种简单的单行方式来排除Python中范围函数的第一个元素?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>