python - 获取没有 len(list) 的上一个对象

标签 python list

这种格式的代码如何获取上一个或下一个对象?

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/

相关文章:

list - Prolog - 替换列表元素

python - 删除列表中没有出现在另一个列表中的子字符串的项目的优雅方法

python - 为什么 Python 给出 ['th' 、 'th' 、 'th' 、 'th' 、 'th' ] 作为 '5 * [' th']' 的结果而不是五个列表?

python - Pytorch中神经网络的前向雅可比行列式很慢

python - Docker 开发工作流程

python - 快速索引

python - 如何旋转矩形 cv2 python

python - 在 Linux/X11 上以编程方式启动独立的 Adob​​e flashplayer

c# - Assert.AreEqual 对于没有增量的 float

Python删除列表字典中的重复项