Сравните два соседних элемента в одном списке - PullRequest
0 голосов
/ 04 декабря 2018

Я уже прошел публикацию , но я хочу знать, что я сделал неправильно в своем коде при использовании цикла for.

Список a, заданный как:

a = [2, 4, 7,1,9, 33]

Все, что я хочу сравнить два соседних элемента, как:

2 4
4 7
7 1
1 9
9 33

Я сделал что-то вроде:

for x in a:
    for y in a[1:]:
        print (x,y)

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Ваш внешний цикл сохраняется для каждого значения во внутреннем цикле.Чтобы сравнить соседние элементы, вы можете zip список со сдвинутой версией самого себя.Смещение может быть достигнуто с помощью среза списка :

for x, y in zip(a, a[1:]):
    print(x, y)

В случае general , где ваш ввод является любым итеративным, а не списком (или другим итерируемым, которыйподдерживает индексирование), вы можете использовать рецепт itertools pairwise , также доступный в библиотеке more_itertools:

from more_itertools import pairwise

for x, y in pairwise(a):
    print(x, y)
0 голосов
/ 04 декабря 2018

Вы сравниваете стабильный элемент со всеми элементами в списке, кроме первого.

Правильный путь будет:

for i in range(len(a)-1):
    x = a[i]
    y = a[i+1]
    print (x,y)
...