【发布时间】:2010-10-26 11:01:21
【问题描述】:
我已经编写了一些类似以下的代码来将项目与列表中的其他项目进行比较。这种双重迭代是否有更优雅的模式?
jump_item_iter = (j for j in items if some_cond)
try:
jump_item = jump_item_iter.next()
except StopIteration:
return
for item in items:
if jump_item is item:
try:
jump_item = jump_iter.next()
except StopIteration:
return
# do lots of stuff with item and jump_item
我不认为“except StopIteration”很优雅
编辑:
为了更清楚,我想访问列表中的每个项目,并将其与列表中满足 some_cond 的下一个项目 (jump_item) 配对。
【问题讨论】:
-
请提供您期望的输入/输出,而不是(或除了)代码。
-
如果items = range(10) and some_cond=lambda x: x %2,那么输出应该是:[(0, 1), (1, 3), (2, 3), (3, 5), (4, 5), (5, 7), (6, 7), (7, 9), (8, 9)]
-
是的,odwl,这将是预期的输出。