Списки: out of range.

Diglerharibo

Новичок
Пользователь
Авг 17, 2020
21
1
3
Python 3.8.3
Windows 10

Здравствуйте дамы и господа,
есть два типа кода на одну и ту же тему:
Код:
'''Дан список, упорядоченный по неубыванию элементов в нем. Определите,
сколько в нем различных элементов.'''

x = list(map(int, input().split()))

k = 1

for i in range(len(x) - 1):
    if x[i+1] > x[i]:
        k += 1
    else:
        continue
    
print(k)

***************************************

x = list(map(int, input().split()))

k = 1

for i in range(len(x)):
    if x[i] > x[i-1]:
        k += 1
    else:
        continue
    
print(k)

Почему во втором случае мне не пришло сообщение о выходе за пределы списка, ведь когда мы находимся на i = 0 сравнение происходит с элементом списка которого нету? Т.е когда мы на единице проверяем условие, больше ли она предыдущего числа, то по сути сравниваем с ничем. Как это можно объяснить?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 618
469
83
когда мы находимся на i = 0 сравнение происходит с элементом списка которого нету
нет, сравнение происходит с последним элементом, срез 'х[-1]' - это последний элемент в последовательности 'х'
 

Форум IT Специалистов