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

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

  • автор:

Способы извлечения n последних элементов списка в Python

При помощи синтаксиса среза можно сделать гораздо больше. Синтаксис lst[-n] получает элемент n начиная с конца. Таким образом, list[-1] получает последний элемент, list[-2] получает предпоследний и т. д., вплоть до list[-len(list)] , что дает первый элемент.

Получение N последних элементов реверсом списка.

Если использовать реверс списка, то последние элементы оригинального списка окажутся в начале:

# создаем список >>> lst = list(range(10)) >>> lst # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # переворачиваем список, !обратите внимание, # что метод `.reverse()` изменяет список "на месте" # Если нужно сохранить оригинальный список, то # необходимо работать с копией lst_copy = lst.copy() >>> lst.reverse() >>> lst # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] # последние элементы начального списка >>> lst[:5] # [9, 8, 7, 6, 5] 

Если нужно, то результирующий список можно отобразить в обратном порядке:

>>> rev_lst = lst[:5] >>> rev_lst.reverse() >>> rev_lst [5, 6, 7, 8, 9] 
  • КРАТКИЙ ОБЗОР МАТЕРИАЛА.
  • Список Python как аргумент по умолчанию
  • Использование списка в качестве стека
  • Использование списка в качестве очереди
  • Генератор списка list
  • Эффективное использование генераторов списков
  • Операция присваивания на месте и списки
  • Поведение списков Python в разных областях видимости
  • Сравнение и идентичность двух списков
  • Как получить несколько последних элементов списка

Python3: Как из функции вывести список?

Я новичок и только разбираюсь, не могу сообразить как сделать вывод списка из функции. Есть большой вывод json, в котором есть список:

dataorg = , , ]> 
  • Переработка и консервирование мяса;
  • Производство и консервирование мяса птицы;
  • Производство мясных (мясосодержащих) консервов;
def okve(): for i in range (0, len(dataorg)): ok = '- ' + dataorg['ДопВидДеят'][i]['Текст'] + ';' return(ok) print(okve()) 

Но мне возвращается только:

  • Переработка и консервирование мяса;

При этом вывод из функции мне нужен для использования в другой функции. Подскажите, какие есть варианты решения?

Отслеживать
48.6k 17 17 золотых знаков 56 56 серебряных знаков 100 100 бронзовых знаков
задан 17 июн 2020 в 20:25
Артём Лебедев Артём Лебедев
25 1 1 серебряный знак 5 5 бронзовых знаков

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

return возвращает только то что в него передали, и завершает работу функции.

Нужно либо аккумулировать список внутри функции и вернуть полный список в конце:

def okve(): ok = [] for i in range (0, len(dataorg['ДопВидДеят'])): ok.append('- ' + dataorg['ДопВидДеят'][i]['Текст'] + ';') return ok print(okve()) 

Либо возвращать значения последовательно с помощью yield , превратив тем самым функцию в генератор (но чтобы получить список, нужно будет обернуть вызов функции в list ):

def okve(): for i in range (0, len(dataorg['ДопВидДеят'])): ok = '- ' + dataorg['ДопВидДеят'][i]['Текст'] + ';' yield ok print(list(okve())) 

Если нужно вывести не в виде списка (в квадратных скобках), а каждый элемент с новой строки, то можно объединить результат в цельную строку с помощью join :

print('\n'.join(okve())) 
print(*okve(), sep='\n') 

Вообще, если вам нужно перебрать элементы списка, то range не нужно:

def okve(): ok = [] for item in dataorg['ДопВидДеят']: ok.append('- ' + item['Текст'] + ';') return ok 
def okve(): for item in dataorg['ДопВидДеят']: ok = '- ' + item['Текст'] + ';' yield ok 

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

Рассказываем о методе join() и других полезных инструментах для конвертирования Python‑списков в строки.

Иллюстрация: Оля Ежак для Skillbox Media

Иван Стуков

Иван Стуков
Журналист, изучает Python. Любит разбираться в мелочах, общаться с людьми и понимать их.

В Python существует два основных способа сделать из списка строку: с помощью цикла и с помощью метода join(). У обоих есть нюансы, о которых мы сейчас расскажем.

Преобразование с помощью цикла

Более понятный для новичка, но и более громоздкий способ перевести список в строку — воспользоваться циклом. Если вы уже знаете его и просто хотите узнать более эффективный и быстрый метод, то сразу переходите к следующему разделу. А если нет, то давайте разбираться.

Как это работает: мы создаём пустую строку, потом с помощью цикла переберём каждый элемент списка и на каждой итерации будем добавлять к строке текущий элемент списка.

lst = ['Преобразование','через','цикл'] #Создаём пустую строку string = '' #По очереди добавляем к ней каждый элемент списка for el in lst: string += el print(string) >>> Преобразованиечерезцикл

Однако такой код не будет работать, если в списке есть не только строки, но и, например, числа. Дело в том, что в Python нельзя смешивать данные разных типов.

Поэтому, перед тем как добавлять элемент в список, его нужно преобразовать в строку. Делается это с помощью функции str(). Добавим её в наш код.

#Создаём список, в котором есть как строки, так и цифры lst = ['Преобразование','через','цикл', 2] string = '' for el in lst: string += str(el) #Превращаем каждый элемент списка в строку print(string) >>> Преобразованиечерезцикл2

Если нужно установить разделитель между строками, то для него нужно прописать отдельную строчку кода внутри цикла.

lst = ['Преобразование','через','цикл', 3] string = '' for el in lst: #Добавляем к строке элемент списка string += str(el) #Добавляем к строке разделитель — в данном случае пробел string += ' ' print(string) >>> Преобразование через цикл 3

Обратите внимание: раз мы добавляем разделитель на каждой итерации, пробел будет и после цифры 3 нашего последнего элемента. Это легко проверить, если вместо пробела добавлять какой-то другой, видимый символ.

Эту проблему можно решить — ещё больше усложнив код. Например, введя условие, которое проверяет, последний это элемент в списке или нет. Однако гораздо проще и удобнее превратить список в строку, используя встроенный метод join().

Преобразование с помощью метода join()

Метод join(), по сути, делает всё то же самое, что и наш цикл, но лучше, удобнее и занимает всего одну строку. Вот как его применяют:

string.join(lst)

В качестве аргумента lst он получает список, элементы которого и будет объединять в строку, а string — это разделитель. Если мы не хотим его устанавливать, то в качестве string нужно указать пустую строку.

Посмотрим, как join() применяется на практике.

lst = ['Преобразование', 'через', 'метод', 'join()'] #Объединяем элементы списка с пустым разделителем print(''.join(lst)) >>> Преобразованиечерезметодjoin() #Устанавливаем пробел в качестве разделителя print(' '.join(lst)) >>> Преобразование через метод join()

Заметили особенность? Разделители ставятся только между элементами, а не после каждого элемента, как было в нашем цикле. join() — умница. Однако и тут есть ахиллесова пята: если в списке встречаются нестроковые элементы, мы получим ошибку. Чтобы этого избежать, надо опять-таки сначала превратить все нестроки в строки. Сделать это можно двумя способами.

Использовать выражение-генератор

Выражение-генератор — это конструкция, которая позволяет провести операцию над каждым элементом списка. Оно возвращает генератор, с которым метод join() обращается точно так же, как и со списками.

lst = [1, 1.2, 'строка', False] print(' '.join(str(el) for el in lst)) >>> 1 1.2 строка False

Конструкция str(el) for el in lst означает, что каждый элемент el в списке lst будет превращён в строку с помощью функции str (стандартной функции Python, которую мы уже использовали, когда работали с циклом).

Использовать функцию map()

Функция map() умеет делать то же самое, что и выражение-генератор, но их синтаксис отличается. В качестве первого аргумента она принимает саму операцию, в качестве второго — список, к элементам которого эта операция применяется.

lst = [1, 1.2, 'строка', False] print(' '.join(map(str, lst))) >>> 1 1.2 строка False

Конструкция map(str, lst) означает, что каждый элемент в списке lst будет превращён в строку с помощью функции str. Обратите внимание, что в качестве аргумента в map() передаётся только название функции, без скобок.

Итоги

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

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

Читайте также:

  • Списки в Python: что это такое и как с ними работать
  • Тест. Какой язык создадите вы — Java или Python?
  • Язык Go: что под капотом и зачем программисту учить его как второй

Списки python — функции и методы Python list()

Список в python

В python списки хранят упорядоченный набор элементов, которые могут быть разных типов. В примере, указанном выше элементы имеют один и тот же тип int . Не обязательно все элементы должны быть одного типа.

 
# Создание списка с разными типам данных heterogenousElements = [3, True, 'Витя', 2.0]

Этот список содержит int , bool , string и float .

Доступ к элементам списка

Каждый элемент имеет присвоенный ему индекс. Важно отметить, в python индекс первого элемента в списке — 0.

Элементы списка

 
z = [3, 7, 4, 2] # создаем список # обращение к первому элементу списка с индексом 0 print(z[0]) # элемент с индексом 0 -> 3

Также поддерживается отрицательная индексация. Отрицательная индексация начинается с конца. Иногда её удобнее использовать для получения последнего элемента в списке, потому что не нужно знать длину списка, чтобы получить доступ к последнему элементу.

Отрицательная индексация списка

 
# выведите последний элемент списка >>> print(z[-1]) 2

Вы также можете получить доступ к одному и тому же элементу с использованием положительных индексов (как показано ниже). Альтернативный способ доступа к последнему элементу в списке z .

 
>>> print(z[3]) 2

Срезы(slice) списка

Срезы хороши для получения подмножества значений с вашего списка. На примере кода, приведенного ниже, он вернет список с элементами из индекса 0 и не включая индекс 2.

Срезы списка

 
# Создайте список z = [3, 7, 4, 2] # Вывод элементов с индексом от 0 до 2 (не включая 2) print(z[0:2]) # вывод: [3, 7]

Срезы списка 2

 
# Все, кроме индекса 3 >>> print(z[:3]) [3, 7, 4]

Срезы списка 3

Код, указанный ниже возвращает список с элементами начиная с индекса 1 до конца.

 
# начиная с индекса 1 до конца списка >>> print(z[1:]) [7, 4, 2]

Изменение элементов в списке

Изменение списка

Списки в Python изменяемы. Это означает, что после создания списка можно обновить его отдельные элементы.

 
z = [3, 7, 4, 2] # Создание списка # Изменяем элемент с индексом 1 на строку 'fish' z[1] = 'fish' print(z)
[3, 'fish', 4, 2]

Методы и функции списков python

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

Метод Index

Метод index возвращает положение первого индекса, со значением х . В указанном ниже коде, он возвращает назад 0.

 
# Создайте список >>> z = [4, 1, 5, 4, 10, 4] >>> print(z.index(4)) 0

Индексы списка

Вы также можете указать, откуда начинаете поиск.

 
>>> print(z.index(4, 3)) 3

list index

Метод Count

Метод count работает так, как звучит. Он считает количество раз, когда значение появляется в списке.

 
>>> random_list = [4, 1, 5, 4, 10, 4] >>> print(random_list.count(4)) 3

Метод Sort

метод sort

Метод sort сортирует и меняет исходный список.

 
z = [3, 7, 4, 2] z.sort() print(z)
[2, 3, 4, 7]

Обратная сортировка списка

Вышеуказанный код сортирует список чисел от наименьшего к наибольшему. Код, указанный ниже, показывает, как вы можете сортировать список от наибольшего к наименьшему.

 
# Сортировка и изменение исходного списка от наивысшего к наименьшему z.sort(reverse = True) print(z)
[7, 4, 3, 2]

Следует отметить, что вы также можете отсортировать список строк от А до Я (или A-Z) и наоборот.

 
 
# Сортировка списка строками names = ["Стив", "Рейчел", "Майкл", "Адам", "Джессика", "Лестер"] names.sort() print(names)
['Адам', 'Джессика', 'Лестер', 'Майкл', 'Рейчел', 'Стив']

Метод Append

list append

Метод append добавляет элемент в конец списка. Это происходит на месте.

 
z = [7, 4, 3, 2] z.append(3) print(z)
[7, 4, 3, 2, 3]

Метод Remove

метод remove

 
z = [7, 4, 3, 2, 3] z.remove(2) print(z)

Код удаляет первое вхождение значения 2 из списка z.

[7, 4, 3, 3]

Метод Pop

метод pop

Метод pop удаляет элемент в указанном индексе. Этот метод также вернет элемент, который был удален из списка. В случае, если вы не указали индекс, он по умолчанию удалит элемент по последнему индексу.

 
z = [7, 4, 3, 3] print(z.pop(1)) print(z)
4 [7, 3, 3]

Метод Extend

Метод Extend

Метод extend расширяет список, добавляя элементы. Преимущество над append в том, что вы можете добавлять списки.
Добавим [4, 5] в конец z :

 
z = [7, 3, 3] z.extend([4,5]) print(z)
[7, 3, 3, 4, 5]

То же самое можно было бы сделать, используя + .

 
>>> print([1,2] + [3,4]) [7, 3, 3, 4, 5]

Метод Insert

метод insert

Метод insert вставляет элемент перед указанным индексом.

 
z = [7, 3, 3, 4, 5] z.insert(4, [1, 2]) print(z)
[7, 3, 3, 4, [1, 2], 5]

Простые операции над списками

Метод Описаниее
x in s True если элемент x находится в списке s
x not in s True если элемент x не находится в списке s
s1 + s2 Объединение списков s1 и s2
s * n , n * s Копирует список s n раз
len(s) Длина списка s , т.e. количество элементов в s
min(s) Наименьший элемент списка s
max(s) Наибольший элемент списка s
sum(s) Сумма чисел списка s
for i in list() Перебирает элементы слева направо в цикле for

Примеры использование функций со списками:

 
>>> list1 = [2, 3, 4, 1, 32] >>> 2 in list1 # 2 в list1? True >>> 33 not in list1 # 33 не в list1? True >>> len(list1) # количество элементов списка 5 >>> max(list1) # самый большой элемент списка 32 >>> min(list1) # наименьший элемент списка 1 >>> sum(list1) # сумма чисел в списке 42 # генератор списков python (list comprehension) >>> x = [i for i in range(10)] >>> print(x) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> print(list1.reverse()) # разворачивает список [32, 1, 4, 3, 2]

Операторы + и * для списков

+ объединяет два списка.

 
list1 = [11, 33] list2 = [1, 9] list3 = list1 + list2 print(list3)
[11, 33, 1, 9]

* копирует элементы в списке.

 
list4 = [1, 2, 3, 4] list5 = list4 * 3 print(list5)
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]

Оператор in и not in

Оператор in проверяет находится ли элемент в списке. При успешном результате он возвращает True , в случае неудачи, возвращает False .

 
>>> list1 = [11, 22, 44, 16, 77, 98] >>> 22 in list1 True

Аналогично not in возвращает противоположный от оператора in результат.

 
>>> 22 not in list1 False

Итерация по списку с использованием цикла for

Список — последовательность. Ниже способ, которые вы можете использовать для цикла, чтобы перебрать все элементы списка.

 
list1 = [1,2,3,4,5] for i in list1: print(i, end=" ")
1 2 3 4 5

Преобразование списка в строку

Как преобразовать список в строку?
Для преобразования списка в строку используйте метод join(). В Python это выглядит так:
",".join(["a", "b", "c"]) -> "a,b,c" .
Разделитель пишут в кавычках перед join, в список должен состоять из строк.

Вот несколько полезных советов для преобразования списка в строку (или любого другого итерабельного, такого как tuple ).

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

 
mylist = ['spam', 'ham', 'eggs'] print(', '.join(mylist))
spam, ham, eggs

Используя тот же метод, вы можете также сделать следующее:

 
>>> print('\n'.join(mylist)) spam ham eggs

Однако этот простой метод не работает, если список содержит не строчные объекты, такие как целые числа. Если вы просто хотите получить строку с разделителями-запятыми, вы можете использовать этот шаблон:

 
list_of_ints = [80, 443, 8080, 8081] print(str(list_of_ints).strip('[]'))
80, 443, 8080, 8081

Или же этот, если ваши объекты содержат квадратные скобки:

 
>>> print(str(list_of_ints)[1:-1]) 80, 443, 8080, 8081

В конце концов, вы можете использовать map() чтобы преобразовать каждый элемент в список строки и затем присоединиться к ним:

 
>>> print(', '.join(map(str, list_of_ints))) 80, 443, 8080, 8081 >>> print('\n'.join(map(str, list_of_ints))) 80 443 8080 8081

Тест на знание списков в Python

Как создать список?
Все варианты верны
l = list(1, 2, 3)
l = list[1, 2, 3]
Что выведет этот код:

a = [ 1, 342, 223, 'Африка', 'Очки']
print(a[-3])

Что выведет этот код:

sample = [10, 20, 30]
sample.append(60)
sample.insert(3, 40)
print(sample)

[10, 20, 30, 40, 60]
[60, 10, 20, 30, 40]
[10, 20, 30, 60, 40]
[10, 20, 30, 40]
Что выведет этот код:

lake = ["Python", 51, False, "22"]
lake.reverse()
lake.reverse()
print(lake[-2])

Что из перечисленного правда?
Элементы списка не могут повторятся
Мы можем вставить элемент на любую позицию в списке
Все элементы списка должны быть одного типа
Список не может содержать вложенных списков
Как получить ['bar', 'baz'] из списка

a = ['foo', 'bar', 'baz', 'qux', 'quux']

print(a[1], a[2])
Как получить 'bar' из списка

x = [10, [3.141, 20, [30, 'baz', 2.718]], 'foo']

Как избавиться от "3" в списке a = [1, 3, 5] и получить [1, 5] ?
С помощью какого метода можно добавить сразу два элемента в список?
Что вернет этот код [1, 2] * 3 ?
[[1, 2], [1, 2], [1, 2]]
[1, 2, 1, 2, 1, 2]
Поделитесь своим результатом через
Play again

Я создал этот блог в 2018 году, чтобы распространять полезные учебные материалы, документации и уроки на русском. На сайте опубликовано множество статей по основам python и библиотекам, уроков для начинающих и примеров написания программ.

Мои контакты: Почта
Python Q https://yandex.ru/q/loves/python Online

Python Q CEO Pythonru admin@pythonru.com https://secure.gravatar.com/avatar/b16f253879f7349f64830c64d1da4415?s=96&d=mm&r=g CEO Pythonru Python Александр Редактор https://t.me/cashncarryhttps://pythonru.com/https://yandex.ru/q/profile/cashnc/ PythonRu.com admin@pythonru.com Alex Zabrodin 2018-10-26 Online Python, Programming, HTML, CSS, JavaScript

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

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