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

问题描述 投票:0回答:5

假设我有一个清单:

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

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

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

最终结果应该如下:

[c,d]
[e,f]

此代码目前不起作用,但我希望您能理解我想要做什么。

python iteration
5个回答
51
投票
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。


10
投票

迭代列表切片的一种更节省内存的方法是使用

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 项。


4
投票

您想使用切片。

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

3
投票

通过使用

iter
内置:

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

0
投票

只需使用内置的slice
语法是: 切片(开始、停止、步骤)
打印出来有点复杂。
打印(你的列表[切片代码])

© www.soinside.com 2019 - 2024. All rights reserved.