Как я могу перевернуть список в Python? - PullRequest
895 голосов
/ 15 октября 2010

Как я могу сделать следующее в Python?

array = [0, 10, 20, 40]
for (i = array.length() - 1; i >= 0; i--)

Мне нужны элементы массива, но от конца к началу.

Ответы [ 32 ]

2 голосов
/ 30 апреля 2015
def reverse(my_list):
  L = len(my_list)
  for i in range(L/2):
    my_list[i], my_list[L-i - 1] = my_list[L-i-1], my_list[i]
  return my_list
2 голосов
/ 01 июля 2016
def reverse(text):
    lst=[]
    for i in range(0,len(text)):
        lst.append(text[(len(text)-1)-i])
    return ''.join(lst)

print reverse('reversed')
2 голосов
/ 12 февраля 2016

Вы всегда можете рассматривать список как стек, просто выталкивая элементы из верхней части стека из заднего конца списка.Таким образом, вы получаете преимущество первой в последней характеристики стека.Конечно, вы потребляете 1-й массив.Мне нравится этот метод в том смысле, что он довольно интуитивно понятен, так как вы видите, что один список используется из внутреннего интерфейса, а другой создается из внешнего интерфейса.

2 голосов
/ 13 октября 2014

Используйте функцию в обратном порядке , как указано ниже, и распечатайте ее

>>> for element in reversed(your_array):
...     print element
2 голосов
/ 28 июля 2016
list_data = [1,2,3,4,5]
l = len(list_data)
i=l+1
rev_data = []
while l>0:
  j=i-l
  l-=1
  rev_data.append(list_data[-j])
print "After Rev:- %s" %rev_data 
2 голосов
/ 30 декабря 2018

Использование логики

Использование логики старой школы для практики на собеседованиях.

Обмен цифрами спереди назад.Использование двух указателей index[0] and index[last]

def reverse(array):
    n = array
    first = 0
    last = len(array) - 1
    while first < last:
      holder = n[first]
      n[first] = n[last]
      n[last] = holder
      first += 1
      last -= 1
    return n

input -> [-1 ,1, 2, 3, 4, 5, 6]
output -> [6, 1, 2, 3, 4, 5, -1]
2 голосов
/ 15 октября 2010

Самый прямой перевод вашего требования на Python - это for утверждение:

for i in xrange(len(array) - 1, -1, -1):
   print i, array[i]

Это довольно загадочно, но может быть полезно.

1 голос
/ 19 августа 2016
>>> l = [1, 2, 3, 4, 5]
>>> print(reduce(lambda acc, x: [x] + acc, l, []))
[5, 4, 3, 2, 1]
1 голос
/ 25 октября 2016

Реверс на месте путем переключения ссылок противоположных индексов:

>>> l = [1,2,3,4,5,6,7]    
>>> for i in range(len(l)//2):
...     l[i], l[-1-i] = l[-1-i], l[i]
...
>>> l
[7, 6, 5, 4, 3, 2, 1]
0 голосов
/ 30 июня 2019

С минимальным количеством встроенных функций, при условии, что это настройки интервью

array = [1, 2, 3, 4, 5, 6,7, 8]
inverse = [] #create container for inverse array
length = len(array)  #to iterate later, returns 8 
counter = length - 1  #because the 8th element is on position 7 (as python starts from 0)

for i in range(length): 
   inverse.append(array[counter])
   counter -= 1
print(inverse)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...