Я хотел бы пройтись по списку, проверяя каждый элемент на соответствие следующему.
Есть ли способ, которым я могу перебрать все, кроме последнего элемента, использующего для х в у? Я бы предпочел сделать это без использования индексов, если смогу.
Заметка
freespace ответил на мой настоящий вопрос, поэтому я принял ответ, но SilentGhost ответил на вопрос, который я должен был задать.
Извиняюсь за путаницу.
y
генератор?Самый простой способ сравнить элемент последовательности со следующим:
источник
Если вы хотите получить все элементы в последовательности пар, используйте этот подход (парная функция из примеров в модуле itertools).
Если вам нужно сравнить последнее значение с каким-то особым значением, соедините это значение до конца
источник
если бы вы имели в виду сравнение n-го элемента с n + 1-м элементом в списке, вы также можете сделать с
обратите внимание, что там нет жесткого кодирования. Это должно быть хорошо, если вы не чувствуете иначе.
источник
Чтобы сравнить каждый элемент со следующим в итераторе без создания списка:
источник
Это отвечает тому, что должен был задать OP , то есть перебирает список, сравнивающий последовательные элементы (отличный ответ SilentGhost ), но обобщенный для любой группы ( n-грамм ): 2, 3, ...
n
:zip(*(l[start:] for start in range(0, n)))
Примеры:
Пояснения:
l[start:]
генерирует список / генератор, начиная с индексаstart
*list
или*generator
: передает все элементы в функцию включения,zip
как если бы она была написанаzip(elem1, elem2, ...)
Примечание:
AFAIK, этот код настолько ленив, насколько это возможно. Не проверено.
источник