Можете ли вы сбросить итераторы? Или есть способ сохранить следующий элемент без повторения через него?Python Iterator: перезагрузить итератор?
ответ
Мне кажется, что для хранения небольшого буфера двух последних элементов в двух отдельных переменных, кортежа, списка и т. Д. И сравнения с текущим элементом в итераторе.
Как получить следующий элемент и предыдущий элемент без вызова next()? – Rimoun
Исключая случаи, когда элемент находится в краю (голова, хвост), мы перемещаем элемент, сравнивая каждый элемент с предшественником/преемником, если он проверяет критерии, мы добавляем его в список.
x= [0,1,-1,3,8,4,3,5,4,3,8]
s= [ x[i] for i in xrange(1,len(x)-2) if x[i-1]< x[i] and x[i]> x[i+1] ]
print s #Output: [1, 8, 5]
UPDATE
В этом случае мы будем использовать while
в петлю в ИТЭР, и каждый раз, когда мы храним datat в трех переменных слева, в середине, справа. Всякий раз, когда мы вызываем следующую переменную, мы перемещаем середину влево, последний в середину и сохраняем следующее новое значение последним.
l= iter([0,1,-1,3,8,4,3,5,4,3,8])
res= []
left,middle,last= l.next(),l.next(),l.next() #Initialize data, we assume that we have at least 3 items, otherwise, we will get exception
while True:
try:
if left<middle and middle>last: # I made first, to check in case we got that case in the first three items
res+=[middle]
left=middle
middle= last
last= l.next()
except StopIteration:
break
print res #Output: [1, 8, 5]
Проблема в том, что я не могу сделать x список. X - итератор. next (x) = 0, next (x) = 1, next (x) = - 1, next (x) = 3 .... Также для головы и хвоста они просто рассматривают одну сторону из них, конечная сторона всегда была бы правдой. – Rimoun
Вы можете использовать itertools.tee
«помнить» предыдущие значения итератора
>>> from itertools import tee, izip
>>> it = iter([0,1,-1,3,8,4,3,5,4,3,8])
>>> it1, it2, it3 = tee(it, 3)
>>> next(it2)
0
>>> next(it3)
0
>>> next(it3)
1
>>> [j for i, j, k in izip(it1, it2, it3) if i <j> k]
[1, 8, 5]
- 1. Итератор и реверс Iterator
- 2. Кастинг HashMap Ключ-итератор к списку Iterator
- 3. Индекс в итератор Python
- 4. python iterator: почему это работает?
- 5. Python shelve и произвольный итератор
- 6. Циркулярный итератор в Python
- 7. Как использовать boost :: python :: iterator с return_internal_reference?
- 8. Iterator Object для удаления дубликатов в Python
- 9. Iterator vs Iterable?
- 10. Итератор и итератор в java
- 11. Python 3, increment iterator
- 12. Python lazy iterator
- 13. Python Generator/Iterator
- 14. Смешение реализации ++ итератор и итератор ++
- 15. Итератор на пользовательских классах в python throws error in python
- 16. Почему итератор считается функциональным в документации Python?
- 17. Java Iterator как класс?
- 18. Рабочие примеры EM :: Iterator
- 19. Построить базовый итератор Python
- 20. Python Итератор Помощь + LXML
- 21. Итератор Python Ошибка памяти
- 22. Python пропуская итератор
- 23. Python, линия итератор
- 24. Итератор Python и zip
- 25. Python итератор добавления логика
- 26. Оценить итератор в python
- 27. Python словарь итератор производительности
- 28. Forkable iterator - есть ли какие-либо его реализации в Python?
- 29. Интерфейс Iterator
- 30. Список Iterator Remove()
Ваш пример не ясно, вы говорите «terator кто больше, чем элемент, до и после него.» каков элемент, который вычисляет на нем, элемент до/после него. – user3378649