Как бы вы объяснили следующее: [position*-1] в Python? * сбивает меня с толку

Я практикуюсь в чтении и написании пояснений к коду Python, чтобы лучше понимать, что я читаю. Я наткнулся на следующее:

orderLog = [ ]
N = 5
def get_last(position):

    if position <= N and position <= len(orderLog):
     return orderLog[position * -1]

Далее следует еще код, но мне нужна помощь в понимании последней строки, начинающейся с return. Умножаю ли я параметр «позиция» на -1, и если да, то почему? Кроме того, ниже я вижу:

Choice = -1

Опять же, это -1 меня озадачивает.

Привет, добро пожаловать в StackOverflow. Я надеюсь, что OrderLog vs orderLog не опечатка. Чтобы вы задумались, что произойдет, если мы получим доступ к списку с отрицательным индексом (например, some_list[-1])?

TrebledJ 30.05.2019 17:27

Возможный дубликат Индекс отрицательного списка?

Devesh Kumar Singh 30.05.2019 17:33

Отрицательный индекс списка означает, что вы считаете назад из конец списка, а не вперед из начало. то есть mylist[-2] означает «Предпоследний элемент в списке».

John Gordon 30.05.2019 17:34

@TrebledJ Это была опечатка! Я исправил это спасибо. Что касается ваших вопросов: я думаю, вы считаете элемент в списке справа. Так почему там символ *? Я умножаю первый элемент справа на параметр «позиция»?

LunaLoveDove 30.05.2019 17:38

@JohnGordon Какова цель символа * в данном случае?

LunaLoveDove 30.05.2019 17:40

умножает position на -1,

Devesh Kumar Singh 30.05.2019 17:43

@LunaLoveDove Это было бы orderLog[-1] * position. Поскольку вы делаете orderLog[position * (-1)], вместо этого вы индексируете orderLog с помощью отрицательныйposition. Это эквивалентно idx = position * -1; return orderLog[idx] (или более читабельно: return orderLog[-position])

Adam Smith 30.05.2019 17:45

Это помогает, если вы играете с функцией. (Например, попробуйте сделать orderLog = [10, 20, 30] и вызвать get_last(1), get_last(2), get_last(3). Далее, что произойдет, если вы попробуете get_last(0), get_last(4)?) Исследование. :)

TrebledJ 30.05.2019 17:46

Кстати, написание position * -1 необычно. Это не так, но большинство людей написали бы это просто как -position.

Mark Dickinson 30.05.2019 17:57
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
9
47
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Индексы отрицательного списка отсчитываются от конца. Рассмотрим этот гипотетический список:

# 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 to N, and position is less than or equal to the length of orderLog, then return the element that is position spaces from the end.

Другие вопросы по теме