Я практикуюсь в чтении и написании пояснений к коду Python, чтобы лучше понимать, что я читаю. Я наткнулся на следующее:
orderLog = [ ]
N = 5
def get_last(position):
if position <= N and position <= len(orderLog):
return orderLog[position * -1]
Далее следует еще код, но мне нужна помощь в понимании последней строки, начинающейся с return. Умножаю ли я параметр «позиция» на -1, и если да, то почему? Кроме того, ниже я вижу:
Choice = -1
Опять же, это -1 меня озадачивает.
Возможный дубликат Индекс отрицательного списка?
Отрицательный индекс списка означает, что вы считаете назад из конец списка, а не вперед из начало. то есть mylist[-2]
означает «Предпоследний элемент в списке».
@TrebledJ Это была опечатка! Я исправил это спасибо. Что касается ваших вопросов: я думаю, вы считаете элемент в списке справа. Так почему там символ *? Я умножаю первый элемент справа на параметр «позиция»?
@JohnGordon Какова цель символа * в данном случае?
умножает position
на -1
,
@LunaLoveDove Это было бы orderLog[-1] * position
. Поскольку вы делаете orderLog[position * (-1)]
, вместо этого вы индексируете orderLog
с помощью отрицательныйposition
. Это эквивалентно idx = position * -1; return orderLog[idx]
(или более читабельно: return orderLog[-position]
)
Это помогает, если вы играете с функцией. (Например, попробуйте сделать orderLog = [10, 20, 30]
и вызвать get_last(1)
, get_last(2)
, get_last(3)
. Далее, что произойдет, если вы попробуете get_last(0)
, get_last(4)
?) Исследование. :)
Кстати, написание position * -1
необычно. Это не так, но большинство людей написали бы это просто как -position
.
Индексы отрицательного списка отсчитываются от конца. Рассмотрим этот гипотетический список:
# positive indexes
# 0 1 2 3 4 5 6
['a', 'b', 'c', 'd', 'e', 'f', 'g']
# -7 -6 -5 -4 -3 -2 -1
# negative indexes
Умножение на минус просто инвертирует знак вашего значения. Я предполагаю, что position
обычно положительный, поэтому этот код выглядит так:
If
position
is less than or equal toN
, and position is less than or equal to the length oforderLog
, then return the element that isposition
spaces from the end.
Привет, добро пожаловать в StackOverflow. Я надеюсь, что
OrderLog
vsorderLog
не опечатка. Чтобы вы задумались, что произойдет, если мы получим доступ к списку с отрицательным индексом (например,some_list[-1]
)?