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

31 投票
5 回答
123354 浏览
提问于 2025-04-16 14:49

假设我有一个列表:

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

我想要做的是像下面的代码那样,遍历中间的两个部分:

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

最终的结果应该是这样的:

[c,d]
[e,f]

这段代码现在是不能运行的,但我希望你能明白我想要实现的目标。

5 个回答

4

你想要使用切片。

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

一种更节省内存的方法来遍历列表的一部分是使用 itertools 模块里的 islice() 函数:

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,才能返回你想要的项。

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个元素。

撰写回答