如何使用这种格式的代码获取上一个或下一个对象?
alignment = [[a,b,c],[2,3,4],[q,w,e]]
for obj in alignment:
some code here to get previous object
Run Code Online (Sandbox Code Playgroud)
我知道如何做到这一点:
for i in range(0,len(alignment)):
alignment[i-1][objIndex]
Run Code Online (Sandbox Code Playgroud)
Kas*_*mvd 12
你可以使用enumerate:
alignment = [[a,b,c],[2,3,4],[q,w,e]]
for index,obj in enumerate(alignment):
alignment[index-1] # pre
alignment[index+1] # next
Run Code Online (Sandbox Code Playgroud)
请注意,作为访问next项目和拒绝多个索引的更有效方法,您可以使用iter()函数从列表(从第二个元素到另一个元素)创建迭代器对象,并使用以下内容访问每个迭代中的下一个元素next:
>>> l=[1,2,3,4]
>>> it=iter(l[1:])
>>> for i in l :
... print i,next(it,None)
...
1 2
2 3
3 4
4 None
Run Code Online (Sandbox Code Playgroud)
请注意,如果您没有将None第二个参数传递给next()函数,则会引发StopIteration错误.您也可以使用try-except语句处理它.
对于短列表,您可以使用zip函数和长列表itertools.izip()函数(zip在python 3中):
>>> for i,j in zip(l,l[1:]):
... print i,j
...
1 2
2 3
3 4
Run Code Online (Sandbox Code Playgroud)
zip(l,l[1:]) 会给你以下几项:
[(1, 2), (2, 3), (3, 4)]
Run Code Online (Sandbox Code Playgroud)
并且在循环中你可以i用作当前项目然后j将是下一个项目或j用作当前然后i将是前一个!:)