【发布时间】:2015-07-30 05:34:43
【问题描述】:
有时我会遇到想要在其中捕获匹配点的情况 一个理解,例如,在这个片段中:
for child1 in node1.getChildren():
if child1.getData() in [child2.getData() for child2 in node2.getChildren()]:
# somehow I want the list comprehension to side effect and capture child2 match point
doNodes(child1, child2)
# Or if we capture an index:
doNodes(child1, node2.getChild(idx)
else:
doOther()
有没有办法做到这一点(捕获 child2 或其索引)而不为 node2 打开另一个循环 - 甚至使用压缩以外的东西。
换句话说:我们只是想缩短内部循环以避免更长的代码并使用标志来测试循环匹配。
注意:可能和这个类似:Finding the index of elements based on a condition using python list comprehension
【问题讨论】:
-
为什么不想打开另一个循环?你已经有两个循环了。
-
没有“理解中的匹配点”。列表推导返回一个列表。您想获得与
child1相同数据的第一个child2吗?可以有多个吗? -
@minitech:我们知道这一点,但我只是在询问可能的副作用或其他一些避免内部循环的技术。