在enumerate python中包含stop参数的最简单方法?

在enumerate python中包含stop参数的最简单方法?,python,python-2.7,indexing,iterator,enumerate,Python,Python 2.7,Indexing,Iterator,Enumerate,有一种简单的方法可以迭代一个iterable对象,它允许指定端点,比如-1,以及枚举中的起点。e、 g for i, row in enumerate(myiterable, start=2): # will start indexing at 2 因此,如果我的对象的长度为10,那么让它在索引2处开始迭代并在索引9处停止迭代的最简单方法是什么 或者,itertools是否有更适合这种情况的产品。我对高性能方法特别感兴趣 此外,在2.6中引入启动选项时,是否有任何理由不使用停止选项 干杯 或

有一种简单的方法可以迭代一个iterable对象,它允许指定端点,比如-1,以及枚举中的起点。e、 g

for i, row in enumerate(myiterable, start=2): # will start indexing at 2
因此,如果我的对象的长度为10,那么让它在索引2处开始迭代并在索引9处停止迭代的最简单方法是什么

或者,itertools是否有更适合这种情况的产品。我对高性能方法特别感兴趣

此外,在2.6中引入启动选项时,是否有任何理由不使用停止选项

干杯


我认为您误解了“start”关键字,它不会跳到iterable中的第n项,而是从n开始计算,例如:

for i, c in enumerate(['a', 'b', 'c'], start=5):
    print i, c
给出:

5 a
6 b
7 c
对于列表和元组之类的简单易懂数据,最简单、最快的方法是:

obj = range(100)
start = 11
stop = 22
for i, item in enumerate(obj[start:stop], start=start):
    pass
for i in range(2, len(myiterable)):

如果我不打算使用iterable项的全部长度,我发现使用以下内容更容易:

obj = range(100)
start = 11
stop = 22
for i, item in enumerate(obj[start:stop], start=start):
    pass
for i in range(2, len(myiterable)):

而不是列举。然后根据循环中的i进行索引。与使用enumerate的其他方法相比,它需要更少的输入。

谢谢@Joran Beasley,这两种方法都是很好的选择,非常有用。我知道下一个问题的答案很明显,那就是自己进行基准测试,但你是否知道一种方法比另一种更快?或更倾向于大或小对象等?它们都会短路,因此在执行方面应该相等。。。或者接近它…我明白它的作用。i、 迭代从2开始的0-9列表将打印到i=11,c=9。也许我把这个问题的措辞弄错了。不过,我已经指出了这一点。
for i in range(2, len(myiterable)):