for elt in itertools.chain.from_iterable(node):
if elt is the last element:
do statement
Run Code Online (Sandbox Code Playgroud)
我如何实现这一目标
Ste*_*lla 19
您可以通过在while循环中手动推进迭代器来执行此操作iter.next(),然后捕获StopIteration异常:
>>> from itertools import chain
>>> it = chain([1,2,3],[4,5,6],[7,8,9])
>>> while True:
... try:
... elem = it.next()
... except StopIteration:
... print "Last element was:", elem, "... do something special now"
... break
... print "Got element:", elem
...
...
Got element: 1
Got element: 2
Got element: 3
Got element: 4
Got element: 5
Got element: 6
Got element: 7
Got element: 8
Got element: 9
Last element was: 9 ... do something special now
>>>
Run Code Online (Sandbox Code Playgroud)
Chr*_*utz 10
当循环结束时,elt变量不会超出范围,并且仍然保持循环给它的最后一个值.所以你可以把代码放在循环的末尾并对elt变量进行操作.它并不是非常漂亮,但Python的范围规则也不是很好.
这个唯一的问题(谢谢,cvondrick)是循环可能永远不会执行,这意味着elt不存在 - 我们得到一个NameError.所以完整的方法大致是:
del elt # not necessary if we haven't use elt before, but just in case
for elt in itertools.chain.from_iterable(node):
do_stuff_to_each(elt)
try:
do_stuff_to_last(elt)
except NameError: # no last elt to do stuff to
pass
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19690 次 |
| 最近记录: |