python:迭代列表中的特定范围

时间:2011-03-31 14:47:22

标签: python iteration

假设我有一个清单:

listOfStuff =([a,b], [c,d], [e,f], [f,g])

我想要做的是以类似于以下代码的方式遍历中间2个组件:

for item in listOfStuff(range(2,3))
   print item

最终结果应为:

[c,d]
[e,f]

此代码目前无效,但我希望您能理解我要做的事情。

4 个答案:

答案 0 :(得分:37)

listOfStuff =([a,b], [c,d], [e,f], [f,g])

for item in listOfStuff[1:3]:
    print item

你必须遍历你的元组片段。 1是您需要的第一个元素,3(实际上是2 + 1)是您不需要的第一个元素。

列表中的元素从0开始计算:

listOfStuff =([a,b], [c,d], [e,f], [f,g])
               0      1      2      3

[1:3]采用元素1和2。

答案 1 :(得分:8)

迭代一个列表片段的更有效内存的方法是使用islice()模块中的itertools

from itertools import islice

listOfStuff = (['a','b'], ['c','d'], ['e','f'], ['g','h'])

for item in islice(listOfStuff, 1, 3):
    print item

# ['c', 'd']
# ['e', 'f']

但是,如果范围的起始值是一个较大的值,则在性能方面这可能相对较低,因为islice必须在返回项目之前迭代第一个起始值-1项。

答案 2 :(得分:4)

你想使用切片。

for item in listOfStuff[1:3]:
    print item

答案 3 :(得分:3)

使用iter内置:

l = [1, 2, 3]
# i is the first item.
i = iter(l)
next(i)
for d in i:
    print(d)