Найти - Пользователи
Полная версия: Можете обьяснить разницу между len(list) и len(list) -1
Начало » Python для новичков » Можете обьяснить разницу между len(list) и len(list) -1
1
katerina090590
Например, есть код for i in range(len(list) -1). Можете обьяснить когда нужно ставить -1, а когда нет? Не понимаю разницы. Иногда -1 ставится с len, иногда нет.
doza_and
в питоне так вообще на пишут ни с единицей ни без.
сразу итерируются по последовательностям.
 for i in "abc":
   ....
for i,j in zip("abc","def"):
    ..... 
py.user.next
katerina090590
Можете обьяснить когда нужно ставить -1, а когда нет?
-1 ставится, когда не нужно доходить до последнего элемента массива и нужно дойти только до предпоследнего элемента массива. А происходит это, когда есть два соседних элемента массива, которые сравниваются между собой. Когда сравниваешь элемент с элементом, который стоит справа от него, индексы у них различаются на единицу. Но когда доходишь до последнего элемента, то справа элементов нет; соответственно, обращение по индексу к элементу, которого нет, приведёт к ошибке. Чтобы этого не произошло, мы доходим только до предпоследнего элемента, у которого справа точно есть элемент. Сравнения соседних элементов в массиве происходят не всегда, поэтому доходим до предпоследнего элемента тоже не всегда. Оттуда и len(…) вместо len(…)-1 .

doza_and
в питоне так вообще на пишут ни с единицей ни без.
сразу итерируются по последовательностям.
Ну, с матрицами поработай так. В итоге придёшь к индексам, как в старые добрые 70-е. Иначе всё это будет смотреться не ахти, слишком запутанно.
Rodegast
> Можете обьяснить когда нужно ставить -1, а когда нет? Не понимаю разницы. Иногда -1 ставится с len, иногда нет.

Всё очень просто. У коллекций индексы начинаются с 0. По этому значение последнего индекса будет на 1 меньше чем количество его элементов. Вот что бы его получить от len(list) и отнимают 1.
py.user.next
Rodegast
Всё очень просто. У коллекций индексы начинаются с 0. По этому значение последнего индекса будет на 1 меньше чем количество его элементов. Вот что бы его получить от len(list) и отнимают 1.
Это тут ни при чём. range(len(lst)) и так всё правильно выдаёт.
Rodegast
> range(len(lst)) и так всё правильно выдаёт.

Не факт что он это именно с range видел.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB