Способы извлечения 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 списки хранят упорядоченный набор элементов, которые могут быть разных типов. В примере, указанном выше элементы имеют один и тот же тип 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]
# Все, кроме индекса 3 >>> print(z[:3]) [3, 7, 4]
Код, указанный ниже возвращает список с элементами начиная с индекса 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
Метод Count
Метод count работает так, как звучит. Он считает количество раз, когда значение появляется в списке.
>>> random_list = [4, 1, 5, 4, 10, 4] >>> print(random_list.count(4)) 3Метод 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
Метод append добавляет элемент в конец списка. Это происходит на месте.
z = [7, 4, 3, 2] z.append(3) print(z)[7, 4, 3, 2, 3]Метод Remove
z = [7, 4, 3, 2, 3] z.remove(2) print(z)Код удаляет первое вхождение значения 2 из списка z.
[7, 4, 3, 3]Метод Pop
Метод pop удаляет элемент в указанном индексе. Этот метод также вернет элемент, который был удален из списка. В случае, если вы не указали индекс, он по умолчанию удалит элемент по последнему индексу.
z = [7, 4, 3, 3] print(z.pop(1)) print(z)4 [7, 3, 3]Метод 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 вставляет элемент перед указанным индексом.
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















