Я написал немного кода, как показано ниже, чтобы сравнить элементы с другими элементами, включенными в список. Есть ли более элегантный образец для такого рода двойной итерации?Python: Элегантный способ двойной/многократной итерации по тому же списку
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
» очень элегантный
Edit:
Для того, чтобы мы надеемся сделать его более ясным, я хочу посетить каждый элемент списка и его сопряжение со следующим элемент далее в списке (jump_item), который удовлетворяет some_cond.
Вместо кода (или в дополнение к нему) укажите свой вход/выход, который вы ожидаете, пожалуйста. –
Правильно ли говорить, что если элементы = диапазон (10) и some_cond = лямбда x: x% 2, то выход должен быть: [(0, 1), (1, 3), (2, 3) , (3, 5), (4, 5), (5, 7), (6, 7), (7, 9), (8, 9)] – odwl
Да, odwl, ожидаемый результат. – EoghanM