for elt in itertools.chain.from_iterable(node):
if elt is the last element:
do statement
我该如何实现
原文由 Bruce 发布,翻译遵循 CC BY-SA 4.0 许可协议
for elt in itertools.chain.from_iterable(node):
if elt is the last element:
do statement
我该如何实现
原文由 Bruce 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用 iter.next()
在 while 循环中手动推进迭代器,然后捕获 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
>>>
原文由 Steven Kryskalla 发布,翻译遵循 CC BY-SA 2.5 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答993 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
当循环结束时,
elt
变量不会超出范围,并且仍然保留循环赋予它的最后一个值。因此,您可以将代码放在循环的末尾并对elt
变量进行操作。它不是很漂亮,但是 Python 的作用域规则也不是很漂亮。唯一的问题(谢谢,cvondrick)是循环可能永远不会执行,这意味着
elt
不存在 - 我们会得到一个NameError
。因此,完整的方法大致是: