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

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

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

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

Ответы [ 32 ]

11 голосов
/ 10 января 2016

Возможные пути,

list1 = [3,4,3,545,6,4,34,243]

list1.reverse()

list1[::-1]
10 голосов
/ 15 октября 2010
array=[0,10,20,40]
for e in reversed(array):
  print e
7 голосов
/ 06 февраля 2016

Использование обратного (массив) будет, вероятно, лучшим маршрутом.

>>> array = [1,2,3,4]
>>> for item in reversed(array):
>>>     print item

Если вам необходимо понять, как можно реализовать это без использования встроенного reversed.

def reverse(a):
    midpoint = len(a)/2
    for item in a[:midpoint]:
        otherside = (len(a) - a.index(item)) - 1
        temp = a[otherside]
        a[otherside] = a[a.index(item)]
        a[a.index(item)] = temp
    return a

Это должно занять время O (N).

5 голосов
/ 04 апреля 2018

ОРГАНИЗАЦИОННЫЕ ЗНАЧЕНИЯ:

В Python можно также управлять порядком списков с помощью sort , упорядочивая переменные в числовом / алфавитном порядке:

Временно:

print(sorted(my_list))

Постоянный:

my_list.sort(), print(my_list)

Вы можете сортировать с флагом "reverse = True" :

print(sorted(my_list, reverse=True))

или

my_list.sort(reverse=True), print(my_list)

БЕЗ ОРГАНИЗАЦИИ

Возможно, вы не хотите сортировать значения, а только наоборот.Тогда мы можем сделать это следующим образом:

print(list(reversed(my_list)))

** Числа имеют приоритет над алфавитом в порядке листинга.Организация значений Python потрясающая.

5 голосов
/ 12 октября 2015

Если вы хотите сохранить элементы перевернутого списка в другой переменной, вы можете использовать revArray = array[::-1] или revArray = list(reversed(array)).

Но первый вариант немного быстрее:

z = range(1000000)
startTimeTic = time.time()
y = z[::-1]
print("Time: %s s" % (time.time() - startTimeTic))

f = range(1000000)
startTimeTic = time.time()
g = list(reversed(f))
print("Time: %s s" % (time.time() - startTimeTic))

Вывод:

Time: 0.00489711761475 s
Time: 0.00609302520752 s
4 голосов
/ 19 марта 2015

Использование списка понимания:

[array[n] for n in range(len(array)-1, -1, -1)]
3 голосов
/ 03 марта 2017

Вы также можете использовать побитовое дополнение индекса массива для обратного просмотра массива:

>>> array = [0, 10, 20, 40]
>>> [array[~i] for i, _ in enumerate(array)]
[40, 20, 10, 0]

Что бы ты ни делал, не делай так.

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

Вы можете использовать reversed()

array=[0,10,20,40]

for e in reversed(array):
  print e
3 голосов
/ 14 декабря 2015
def reverse(text):
    output = []
    for i in range(len(text)-1, -1, -1):
        output.append(text[i])
    return output
3 голосов
/ 30 сентября 2014

Строго говоря, вопрос не в том, как вернуть список в обратном порядке, а в том, как перевернуть список с примером списка имен array.

Чтобы перевернуть список с именем "array", используйте array.reverse().

Невероятно полезный метод среза, как описано, также может быть использован для реверса списка на месте, определяя список как секционированную модификацию самого себя, используя array = array[::-1].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...