这种格式的代码如何获取上一个或下一个对象?
alignment = [[a,b,c],[2,3,4],[q,w,e]]
for obj in alignment:
some code here to get previous object
我知道如何做到这一点:
for i in range(0,len(alignment)):
alignment[i-1][objIndex]
最佳答案
您可以使用 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
请注意,作为访问下一个
项并拒绝多重索引的更有效方式,您可以使用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
注意,如果您不将 None
作为第二个参数传递给 next()
函数,它将引发一个 StopIteration
错误。您也可以使用 try-except
语句来处理它。
此外,对于短列表,您可以使用 zip
函数,对于长列表,您可以使用 itertools.izip()
function (zip
在 python 3 中):
>>> for i,j in zip(l,l[1:]):
... print i,j
...
1 2
2 3
3 4
zip(l,l[1:])
将为您提供以下项目对:
[(1, 2), (2, 3), (3, 4)]
并且在循环中,您可以使用 i
作为当前项目,然后 j
将成为下一个项目,或者使用 j
作为当前项目i
将是前一个!:)
关于python - 获取没有 len(list) 的上一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30370935/