python:在列表中迭代特定范围
假设我有一个列表:
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个元素。