Перейти к содержимому

Как перевернуть массив в python

  • автор:

Перевернуть список

Потому что метод reverse переворачивает список, но ничего не возвращает.

>>> a = [1, 2, 3] >>> a [1, 2, 3] >>> a.reverse() >>> a [3, 2, 1] 

если вы хотите чтобы функция возвращал перевернутый список не изменяя его — используйте функцию reversed (будьте внимательны, функция вернет итератор!)

>>> a = [1, 2, 3] >>> list(reversed(a)) [3, 2, 1] >>> a [1, 2, 3] 

Отслеживать
ответ дан 21 фев 2014 в 8:35
4,676 16 16 серебряных знаков 15 15 бронзовых знаков

Можно копировать список целиком :: и итерировать в обратном порядке — к пр. так:

for i in a[::-1]: print i,"\n" 

У print неявная конкатенация строк через запятую — туда можно и \n\n впихать, на версии 3 должно быть также.

В принципе, лучший ответ уже был дан — метод reversed (в противовес reverse()):

for i in reversed(a): print i 

Также, если я такой уж многословный, возможно вам нужна разновидность списка (stack — first in last out):

a = [66.25] a.append(333) a.append(333) a.pop() 333 a.pop() 333 a.pop() 66.25 

Python: List (Списки)

Список – это структура данных, которая содержит упорядоченный набор элементов, т.е. хранит последовательность элементов. Изменяемые списки создаются через квадратные скобки. Элементы могут повторяться и меняться. Доступ к отдельному элементу тоже через квадратные скобки. Отсчёт с 0.

Узнать все методы списка можно через команду.

 help(list) 

Рассмотрим некоторые примеры.

 cats = ["Барсик", "Мурзик", "Васька"] print(cats) # все элементы списка print(cats[1]) # один указанный элемент numbers = [0, 1, 2, 3, 4, 5] print(numbers) print(numbers[4]) // список из строки mylist = list('Барсик') print(mylist) 

В списке могут быть разные типы. Поместим в список числа и строки.

 mix = ["one", 3, "two", "three", 9, 3] print(mix[1]) print(mix[2]) 

Можно создать пустой список.

 empty = [] print(empty) # [] 

В качестве индекса можно указать отрицательные значения. Так индекс -1 вернёт последний элемент списка, -2 предпоследний и т.д.

 numbers = [0, 1, 2, 3, 4, 5] print(numbers[-1]) #5 print(numbers[-2]) #4 print(numbers[-3]) #3 

Развернуть список можно через reverse().

 reversed = [1, 2, 3, 4, 4] reversed.reverse() print (reversed) # [4, 4, 3, 2, 1] kitten = list("Барсик") kitten.reverse() print(kitten) # ['к', 'и', 'с', 'р', 'а', 'Б'] 

Сортировать можно через sort().

 mylist = [8, 2, 11, 4, 3] mylist.sort() print (mylist) 

Можем заменить существующие элементы списка.

 numbers = [0, 1, 2, 3, 4, 5] numbers[0] = 10 numbers[5] = 22 print(numbers[-1]) print(numbers[0]) 

Добавить новый элемент в конец списка можно через append().

 numbers = [0, 1, 2, 3, 4, 5] numbers.append(99) print(numbers[-1]) 

Можно вставить элемент в нужную позицию через insert(), указав индекс.

 numbers = [0, 1, 2, 3, 4, 5] numbers = [0, 1, 2, 3, 4, 5] numbers.insert(1, 33) print(numbers[1]) print(numbers) # [0, 33, 1, 2, 3, 4, 5] 

Удалить элемент по указанному индексу можно через remove().

 numbers = [0, 1, 2, 3, 4, 5] numbers.remove(5) print(numbers) # [0, 1, 2, 3, 4] 

Метод pop() также позволяет удалить элемент по индексу, но при этом возвращает значение удалённого элемента. Если индекс не указан, то удаляется последний элемент.

 numbers = [6, 3, 9, 5, 1, 5] poped = numbers.pop(2) print(poped) # 9 poped = numbers.pop() print(poped) # 5 

Есть ещё способ удаления по индексу через инструкцию del.

Когда удаляется элемент с индексом 1, элемент, имевший индекс 2, становится элементом с индексом 1, элемент, имевший индекс 3, приобретает индекс 2 и так далее. Соответственно, количество индексов при удалении элемента уменьшается.

Можно запускать команду del numbers[1] снова и снова, удаляя по одному элементу списка. Главное, это вовремя остановиться, чтобы не получить ошибку при удалении несуществующего индекса.

Длину списка можно узнать через len().

 numbers = [6, 8, 2, 5, 1, 5] print(len(numbers)) # 6 

Узнать количество одинаковых элементов в списке можно через count().

 kitten = list('котёнок') print(kitten.count('к')) # 2 

Список можно расширить другим списком через extend(). Новые элементы добавляются в конец первого списка.

 oneList = [6, 8, 2, 5, 1, 5] secondList = [0, 1, 4] oneList.extend(secondList) print(oneList) # [6, 8, 2, 5, 1, 5, 0, 1, 4] 

Два списка можно сложить и получить третий список.

 firstList = [6, 8, 2, 5, 1, 5] secondList = [0, 1, 4] bigList = firstList + secondList print(bigList) # [6, 8, 2, 5, 1, 5, 0, 1, 4] 

Пройтись по всем элементам списка можно через цикл for.

 numbers = [1, 2, 3] for element in numbers: print(element) 

Фильтрация списка через filter() с лямбдой

Мы можем фильтровать элементы списка по заданному условию, используя класс filter и лямбда-выражения.

Допустим, у нас есть список чисел от 1 до 10 и мы хотим оставить числа меньше 5. Применяем к списку функцию filter(), в котором указываем лямбда-выражение — берётся каждый элемент списка и проверяется условие. Если число меньше 5, то условие выполняется и число попадает в объект класса filter. Затем мы создаём новый список, куда помещаем созданный объект и на выходе получаем финальный результат — отфильтрованный список.

 sourceList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] filterObj = filter(lambda x: x < 5, sourceList) print(type(filterObj)) # filteredList = list(filterObj) print(filteredList) # [1, 2, 3, 4] 

Существует другой громоздкий вариант через цикл for, который не стал приводить здесь.

Вместо лямбда-выражения можно использовать именную функцию. Создадим именную функцию под именем isGreater и зададим условие - числа должны быть больше 5.

 def isGreater(x): return x > 5 sourceList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] filteredList = list(filter(isGreater, sourceList)) print(str(filteredList)) 

Проекция на список через map() с лямбдой

Если нужно пройтись по всем элементам списка и что-то с ним сделать, то подойдёт функция map(). Допустим, мы хотим увеличить значение каждого элемента на заданную величину.

 sourceList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] mapObj = map(lambda x: x + 9, sourceList) print(type(mapObj)) # mappedList = list(mapObj) print(mappedList) # [10, 11, 12, 13, 14, 15, 16, 17, 18, 19] 

Вырезка последовательности

Вырезка последовательности (получение фрагмента) применима к спискам, кортежам и строкам. Иногда используется термин "срез".

 item[START:STOP:STEP] 

Операция вырезки производится при помощи указания имени последовательности, за которым идёт пара чисел в квадратных скобках, разделённых двоеточием. Третий аргумент отвечает за шаг и используется реже (см. ниже).

Первое число перед двоеточием указывает позицию начала вырезки, а второе число после двоеточия указывает, где вырезка заканчивается. Если первое число не указано, вырезка начинается с начала последовательности. Если пропущено второе число, Python закончит вырезку у конца последовательности. Обратите внимание, что полученная вырезка будет начинаться с указанной начальной позиции, а заканчиваться прямо перед указанной конечной позицией, т.е. начальная позиция входит в вырезку, а конечная – нет.

 sourceList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] print(sourceList[1:4]) # со второго до четвёртого print(sourceList[5:]) # с шестого элемента до конца print(sourceList[1:-1]) # со второго до предпоследнего print(sourceList[:]) # все элементы 
[2, 3, 4] [6, 7, 8, 9, 10] [2, 3, 4, 5, 6, 7, 8, 9] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Можно указать шаг вырезки в третьем аргументе (по умолчанию шаг вырезки равен 1):

 sourceList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] print(sourceList[1:8:2]) # [2, 4, 6, 8] 

с помощью срезов можно не только извлекать элементы, но и добавлять и удалять элементы (только для изменяемых списков).

 sourceList = [1, 2, 3, 4, 5] sourceList[1:3] = [7, 7, 7] # добавим три новых элемента вместо второго и третьего элемента print(sourceList) # [1, 7, 7, 7, 4, 5] del sourceList[:-3] # удаляем первые элементы списка до третьего элемента с конца print(sourceList) # [7, 4, 5] 

Как перевернуть список в Python

Про списки в языке программирования Python я уже начала рассказывать, ссылки на предыдущие статьи оставлю немного ниже, так же рекомендую обязательно их прочитать. Они позволять вам разобраться со следующими двумя вопросами, первый, как в списке найти одинаковые элементы и посчитать их количество и второй как можно удалить определенные элементы списка. Сегодня рассмотрим еще один метод reverse() который позволяет перевернуть список, вывести его элементы на оборот. Реализовать все это очень просто буквально с помощью одной строчки кода.

Как вывести список элементов наоборот Python

И так для примера возьмем самый простой список с элементами от 1 до 10.

Как вывести список наоборот Python

Для того чтобы этот список перевернуть и вывести его элементы наоборот нужно использовать метод reverse() добавить в код вот такую строчку.

numbers.reverse()

Вместо numbers пишите название вашего списка, но думаю это и так понятно.

Как перевернуть список Python

Вот таким образом в Python можно вывести элементы любого списка в обратном порядке.

Как повернуть массив на 90 градусов python

Проще всего это будет сделать с помощью Numpy:

import numpy as np l = [[0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]] a = np.array(l) # a = array([[0, 0, 0, 0], # [0, 0, 0, 1], # [0, 0, 0, 1], # [0, 0, 0, 1]], dtype=int64) # поворот: np.rot90(a) # a = array([[0, 1, 1, 1], # [0, 0, 0, 0], # [0, 0, 0, 0], # [0, 0, 0, 0]], dtype=int64) # можно несколько раз повернуть: np.rot90(a, k=2) # a = array([[1, 0, 0, 0], # [1, 0, 0, 0], # [1, 0, 0, 0], # [0, 0, 0, 0]], dtype=int64) # "вернуть" к обычному списку списков: np.rot90(a).tolist() # => [[0, 1, 1, 1], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] 

Соответственно для поворота по часовой стрелке используйте np.rot90(a, k=3) (270 градусов).

Если не использовать Numpy, то для поворота по часовой стрелке есть такой способ:

def transposed(matrix): return [[*col] for col in zip(*matrix)] def rot90: return list(map(reversed, transposed(matrix))) # или в одно действие def rot90(matrix): return [list(reversed(col)) for col in zip(*matrix)] 

. а для поворота против часовой:

def rot90(matrix): return [list(row) for row in list(zip(*matrix))[::-1]] 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *