这是我的Python代码:如何获得下一个OBJ在这个地方
a=['aaa','bbb','oooo','qqqq','gggg']
for i in a:
print i #how to get the next obj in this place .
我想接下来的代码时,我得到i
元素,
感谢
这是我的Python代码:如何获得下一个OBJ在这个地方
a=['aaa','bbb','oooo','qqqq','gggg']
for i in a:
print i #how to get the next obj in this place .
我想接下来的代码时,我得到i
元素,
感谢
您可以使用the zip
function来获取for
循环中列表中的当前项和下一项。所以for
循环通过列表,该列表在同一时间由1偏移迭代:
for this,after in zip(a,a[1:]):
print this,after
然而,zip
停在最短列表的末尾,所以你不会得到处理的最后一个元素你的清单。如果这是一个问题,请使用izip_longest
from itertools
。
import itertools
for this,after in itertools.izip_longest(a,a[1:]):
print this,after
在这种情况下after
将None
在列表的最后一个项目。
for this,after in zip(a,a[1:] + [None]):
print this,after
您可以使用{% for x, y in somelist %}
:
izip_longest
通过在较短列表的末尾附加None
在Python 2.6,所以如果你正在运行的早期版本,你可以实现用手同样的效果介绍在Django模板中,但您需要在模型中执行zip
并将其存储在传递给模板的变量中。
它更容易只是枚举列表如下:
a=['aaa','bbb','oooo','qqqq','gggg']
for idx, item in enumerate(a):
print item
if idx < len(a)-1:
print a[idx+1]
(编辑:固定IndexError
)
一旦它碰到最后一个元素,它就会崩溃。 – 2011-02-16 06:16:21
可以用于django模板。 http://stackoverflow.com/questions/5012973/how-to-get-the-next-obj-when-loop-the-django-model – zjm1126 2011-02-16 06:36:20
>>> def twobytwo(it, last_single=False):
... guard = object()
... oe = guard
... for e in it:
... if oe != guard:
... yield oe, e
... oe = e
... if oe != guard and last_single:
... yield oe, None
...
>>> for a, b in twobytwo(['aaa','bbb','oooo','qqqq','gggg']):
... print a, b
...
aaa bbb
bbb oooo
oooo qqqq
qqqq gggg
>>> for a, b in twobytwo(['aaa','bbb','oooo','qqqq','gggg'], last_single=True):
... print a, b
...
aaa bbb
bbb oooo
oooo qqqq
qqqq gggg
gggg None
>>>
我不明白你想要什么。显示输出应该是什么样子。 – 2011-02-16 08:00:32