Я хотел бы перебрать список в обратном порядке в Python. Я получаю это на С#, Java и т. д., но не на Python.
Вот что у меня есть:
lista = [100, 200, 500, 2, 36]
n = len(lista)
for i in len(lista):
print(lista[n])
n = n-1
Хуже того, я получаю ошибку в строке print(lista[n])
: она не позволяет мне передать «n» в качестве индекса списка.
Просто используйте функцию reversed() , которая входит в стандартную комплектацию Python:
Для вашего списка верните:
О вашем коде и почему он не работает:
Прежде всего, если вы сохраните значение длины списка, используйте эту переменную!
Кроме того, вы выполняете итерацию по
len(lista)
, то есть пытаетесь выполнить итерацию по одному элементу, поскольку онlen(lista)
является целым числом. Это все равно, что сказатьfor i in 5
, что заставит вас выполнить итерацию только один раз.Поэтому то, что вы, вероятно, захотите сделать, это просмотреть диапазон данных от 0 до этой длины.
Затем речь идет о печати каждый раз элемента позиции -1 по отношению к предыдущему.
Все вместе это будет выглядеть так:
Или, более понятно и как предлагает FJSevilla в комментариях , используйте отрицательный канал, чтобы начать с последнего элемента и, таким образом, иметь более четкий индекс:
В дополнение к решениям, основанным на
reversed()
другом часто встречающемся приеме, используется синтаксис среза , обычно используемый для извлечения подмножества списка, как вlista[inicio:fin]
.Оператор среза поддерживает третий параметр — приращение между индексами. Например, чтобы вытащить элементы через каждые 2 индекса:
lista[inicio:fin:2]
. Приращение может быть отрицательным, в этом случаеinicio
оно должно быть больше чем ,fin
и элементы перемещаются в обратном направлении. Когда приращение отрицательное, если опущеноinicio
, предполагается конец списка, а если опущеноfin
, предполагается начало.Если сложить все это вместе
lista[::-1]
, список будет возвращен в обратном порядке. Чтобы:Как правило, в Python вы можете использовать отрицательные индексы, чтобы начать с конца.
результат:
С индексами можно сотворить немного волшебства:
Вылет из:
Другое возможное решение — сначала получить список в обратном порядке, что легко сделать с помощью функции reversed. Затем вы можете нормально перебирать этот новый список. Следует отметить, что этот метод рекомендуется, когда размер управляемых вами списков находится между малым и средним (несколько тысяч), в противном случае создание нового списка может потребовать значительного времени и ресурсов. С другой стороны, использование этого подхода обычно более читабельно и менее подвержено ошибкам.
Пример, если у вас есть список:
И вы делаете L2 = перевернутое (L), вы получаете
Затем вы можете нормально печатать, например:
Приведенный выше код работает в python 3, но вы можете реализовать то же самое в python2, например:
Другой способ сделать это:
выход.
Помощь вашему коду может быть
или другой способ:
еще один с исходным кодом, добавлением диапазона и заменой двух строк
36 2 500 200 100
[36, 2, 500, 200, 100]
36 2 500 200 100
Вы должны вычесть один an, так как это дает ошибку вне диапазона
Я очень новичок в Python, но для просмотра списка в обратном направлении гораздо проще использовать цикл while, смотри... (тоже for, но я вижу его более абстрактно)