Списки (list). Функции и методы списков
Сегодня я расскажу о таком типе данных, как списки, операциях над ними и методах, о генераторах списков и о применении списков.
Что такое списки?
Списки в Python — упорядоченные изменяемые коллекции объектов произвольных типов (почти как массив, но типы могут отличаться).
Чтобы использовать списки, их нужно создать. Создать список можно несколькими способами. Например, можно обработать любой итерируемый объект (например, строку) встроенной функцией list:
Список можно создать и при помощи литерала:
Как видно из примера, список может содержать любое количество любых объектов (в том числе и вложенные списки), или не содержать ничего.
И еще один способ создать список — это генераторы списков. Генератор списков — способ построить новый список, применяя выражение к каждому элементу последовательности. Генераторы списков очень похожи на цикл for.
Возможна и более сложная конструкция генератора списков:
Но в сложных случаях лучше пользоваться обычным циклом for для генерации списков.
Функции и методы списков
Создать создали, теперь нужно со списком что-то делать. Для списков доступны основные встроенные функции, а также методы списков.
Таблица «методы списков»
Метод | Что делает |
---|---|
list.append(x) | Добавляет элемент в конец списка |
list.extend(L) | Расширяет список list, добавляя в конец все элементы списка L |
list.insert(i, x) | Вставляет на i-ый элемент значение x |
list.remove(x) | Удаляет первый элемент в списке, имеющий значение x. ValueError, если такого элемента не существует |
list.pop([i]) | Удаляет i-ый элемент и возвращает его. Если индекс не указан, удаляется последний элемент |
list.index(x, [start [, end]]) | Возвращает положение первого элемента со значением x (при этом поиск ведется от start до end) |
list.count(x) | Возвращает количество элементов со значением x |
list.sort([key=функция]) | Сортирует список на основе функции |
list.reverse() | Разворачивает список |
list.copy() | Поверхностная копия списка |
list.clear() | Очищает список |
Нужно отметить, что методы списков, в отличие от строковых методов, изменяют сам список, а потому результат выполнения не нужно записывать в эту переменную.
И, напоследок, примеры работы со списками:
Изредка, для увеличения производительности, списки заменяют гораздо менее гибкими массивами (хотя в таких случаях обычно используют сторонние библиотеки, например NumPy).
Для вставки кода на Python в комментарий заключайте его в теги
- Модуль csv - чтение и запись CSV файлов
- Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
- Онлайн-обучение Python: сравнение популярных программ
- Книги о Python
- GUI (графический интерфейс пользователя)
- Курсы Python
- Модули
- Новости мира Python
- NumPy
- Обработка данных
- Основы программирования
- Примеры программ
- Типы данных в Python
- Видео
- Python для Web
- Работа для Python-программистов
- Сделай свой вклад в развитие сайта!
- Самоучитель Python
- Карта сайта
- Отзывы на книги по Python
- Реклама на сайте
Как сложить списки в python: простое руководство
В программировании часто возникает необходимость объединить два или более списков в один. Python предоставляет несколько способов выполнить эту задачу. В данной статье мы рассмотрим простой и эффективный способ сложения списков, который поможет вам сэкономить время и упростить ваш код.
Прежде всего, давайте разберемся в том, что такое список в Python. Список — это упорядоченная коллекция элементов, которая может содержать объекты разных типов. Каждый элемент списка имеет свой индекс, с помощью которого можно обратиться к конкретному элементу. Списки в Python создаются с использованием квадратных скобок и элементы разделяются запятыми.
Существует несколько способов сложения списков в Python. Один из самых простых и наиболее распространенных — использование оператора «+». Оператор «+» позволяет объединять два списка, создавая новый список, содержащий все элементы обоих списков.
Например, если у нас есть два списка: [1, 2, 3] и [4, 5, 6], мы можем сложить их, написав «list1 + list2», и получить новый список, содержащий все элементы обоих списков: [1, 2, 3, 4, 5, 6]. Этот способ очень прост в использовании и позволяет легко выполнять операции с объединенными списками.
Как работать со списками в Python: эффективные способы использования
1. Итерация по списку
my_list = [1, 2, 3, 4, 5] for item in my_list: print(item)
1 2 3 4 5
2. Операции среза
Еще одна мощная возможность списков в Python – операции среза. Они позволяют получить подсписок из основного списка в виде нового списка. С помощью операций среза можно выбирать определенные элементы списка или выполнять операции над целыми подсписками.
my_list = [1, 2, 3, 4, 5] sub_list = my_list[1:4] print(sub_list)
[2, 3, 4]
3. Преобразование элементов списка
Списки в Python имеют встроенные методы и функции для преобразования элементов. Например, вы можете применить функцию map к списку, чтобы применить какую-либо операцию к каждому элементу списка и получить новый список с результатами.
my_list = [1, 2, 3, 4, 5] new_list = list(map(lambda x: x ** 2, my_list)) print(new_list)
[1, 4, 9, 16, 25]
В этом разделе мы рассмотрели только некоторые эффективные способы использования списков в Python. Списки предлагают широкий набор функций и методов, позволяющих удобно и эффективно работать с данными. Ознакомьтесь с документацией Python, чтобы узнать больше о возможностях списков.
Смотрите также: Как установить время в Linux
Простое объединение списков
Для использования оператора «+» необходимо просто указать два списка, которые нужно объединить, разделив их оператором «+». Например:
list1 = [1, 2, 3] list2 = [4, 5, 6] merged_list = list1 + list2 print(merged_list)
В результате выполнения данного кода на экран будет выведен объединенный список:
[1, 2, 3, 4, 5, 6]
Таким образом, оператор «+» позволяет легко и быстро объединить два списка в один без изменения исходных списков. Он может использоваться как для числовых, так и для строковых списков.
Использование функции zip
Функция zip в Python предоставляет простой и эффективный способ объединения нескольких списков. Она создает итератор, который позволяет обходить элементы из каждого списка в парах.
Применение функции zip особенно полезно, когда необходимо объединить значения из двух и более списков одинаковой длины. Например, если у нас есть список имен и список возрастов, мы можем использовать функцию zip, чтобы создать новый список, состоящий из пар «имя-возраст».
Вот простой пример использования функции zip:
names = ["Анна", "Мария", "Иван"]
ages = [25, 32, 40]
for name, age in zip(names, ages):
print(f" - лет")
Результат выполнения этого кода будет:
Анна - 25 лет Мария - 32 лет Иван - 40 лет
Функция zip может также использоваться для объединения более двух списков. В этом случае функция zip будет создавать пары из элементов первого списка с элементами других списков. Если списки имеют различную длину, то функция zip будет создавать пары только до минимальной длины списка.
Помимо этого, функция zip возвращает итератор, что позволяет использовать ее внутри циклов, применять к результатам другие функции, например, использовать функцию список() для создания нового списка.
Применение генераторов списков
Генераторы списков представляют собой выражение, которое генерирует элементы списка на основе итерации по другому источнику данных или последовательности операций. Их синтаксис состоит из квадратных скобок, внутри которых указывается выражение или операции, выполняемые для каждого элемента.
Один из преимуществ генераторов списков заключается в их эффективности. Поскольку они генерируют элементы по мере необходимости, они могут быть использованы для создания больших списков без необходимости хранить все элементы в памяти.
Генераторы списков также позволяют использовать условные операторы и операции для фильтрации или преобразования элементов списка. Это позволяет создавать более сложные и гибкие списки, учитывая определенные условия или требования.
Смотрите также: Как установить tqdm python
Давайте рассмотрим пример использования генераторов списков для создания списка квадратов чисел от 1 до 10:
Пример кода | Результат |
---|---|
squares = [x**2 for x in range(1, 11)] | [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] |
В этом примере генератор списка [x**2 for x in range(1, 11)] генерирует список квадратов чисел, проходя через итератор range(1, 11) и применяя операцию возведения в квадрат к каждому элементу. Результатом является список квадратов чисел от 1 до 10.
Генераторы списков могут быть использованы не только для создания списков чисел, но и для создания списков с другими типами данных или более сложными структурами. Они также могут быть комбинированы с другими функциями и методами Python для выполнения более сложных операций с данными.
Использование генераторов списков позволяет улучшить производительность и читаемость кода, делая его более компактным и эффективным. При необходимости создания списков с определенными условиями или преобразованиями, генераторы списков представляют отличный выбор для достижения желаемых результатов.
Сортировка и фильтрация списков
Пример сортировки списка по возрастанию:
numbers = [4, 2, 1, 3] sorted_numbers = sorted(numbers) print(sorted_numbers)
В результате выполнения данного кода будет выведен отсортированный список [1, 2, 3, 4] .
Если требуется отсортировать список по убыванию, можно воспользоваться аргументом reverse=True :
numbers = [4, 2, 1, 3] sorted_numbers = sorted(numbers, reverse=True) print(sorted_numbers)
Теперь на экране будет отображен список [4, 3, 2, 1] .
Помимо сортировки, иногда необходимо отфильтровать список по определенным критериям. Для этого в Python можно использовать функцию filter() . Она позволяет оставить в списке только те элементы, для которых заданная функция вернет True .
Пример фильтрации списка, оставляющей только четные числа:
numbers = [1, 2, 3, 4, 5, 6] filtered_numbers = list(filter(lambda x: x % 2 == 0, numbers)) print(filtered_numbers)
В результате выполнения данного кода будет выведен список [2, 4, 6] , так как функция lambda x: x % 2 == 0 возвращает True для четных чисел.
- Сортировка списков в Python осуществляется с помощью функции sorted() или метода sort() .
- Фильтрация списков производится с помощью функции filter() .
Разделение списков на подсписки
Давайте рассмотрим пример:
def split_list(lst, n): return [lst[i:i + n] for i in range(0, len(lst), n)] my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] result = split_list(my_list, 3) print(result)
В этом примере мы создаем функцию split_list , которая принимает два аргумента — список lst и число n . Функция использует генератор списка и возвращает список, разделенный на подсписки длиной n .
Результат: | [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]] |
---|
Такой подход к разделению списков может быть полезен, например, при работе с большими объемами данных или при необходимости разделить список на равные части.
Смотрите также: Основные дистрибутивы Linux
Удаление дубликатов из списка
Существует несколько способов удаления дубликатов из списка в Python. Один из самых простых способов — использование функции list(set(list_name)) . Этот подход создает множество из списка, которое автоматически удаляет все дубликаты, а затем преобразует его обратно в список.
Если нужно сохранить порядок элементов, можно использовать метод list_name = list(dict.fromkeys(list_name)) . Этот метод использует словарь для удаления дубликатов и затем преобразует его обратно в список.
Если порядок элементов не важен, можно использовать функцию list_name = list(set(list_name)) . Этот метод более эффективен, но не сохраняет порядок элементов.
Также можно использовать метод list_name = sorted(list(set(list_name))) , чтобы удалить дубликаты и отсортировать список по возрастанию или убыванию.
Независимо от выбранного метода, удаление дубликатов из списка поможет облегчить работу с данными и повысить эффективность программы.
Вопрос-ответ:
Как сложить два списка в Python?
Чтобы сложить два списка в Python, можно использовать оператор `+`. Например, если у нас есть два списка `a` и `b`, мы можем сложить их следующим образом: `c = a + b`.
Можно ли сложить списки разной длины в Python?
Да, в Python можно сложить списки разной длины. В результате будет создан новый список, содержащий все элементы из обоих списков. Если один список короче другого, то в новом списке будут сначала идти элементы из первого списка, а затем элементы из второго списка.
Как сложить несколько списков в Python?
Чтобы сложить несколько списков в Python, можно использовать оператор `+`. Например, если у нас есть списки `a`, `b` и `c`, мы можем сложить их следующим образом: `d = a + b + c`.
Есть ли более эффективный способ сложения списков в Python?
Да, существует более эффективный способ сложения списков в Python, который использует метод `extend()`. Вместо создания нового списка с помощью оператора `+`, метод `extend()` добавляет элементы из одного списка в конец другого списка. Этот способ более эффективен, так как не создает новый объект списка.
Как сложить элементы двух списков?
Если важно сохранить начальные списки, то попробуем по другому:
# заполнение переменных a = [1, 2, 3, 4] b = [1, 2, 3] # обработка c = map(sum, zip(a + [0,]*(len(b)-len(a)), b + [0,]*(len(a)-len(b)))) # вывод результата print(list(c))
Вариант 3:
В Python 3.8 появился "морж" - оператор := Если важно не повторить функционал:
# заполнение переменных a = [1, 2, 3, 4] b = [1, 2, 3] # обработка c = map(sum, zip(a + [0, ] * (x := len(b) - len(a)), b + [0, ] * -x)) # вывод результата print(list(c)) Результат: > [2, 4, 6, 4]
Отслеживать
ответ дан 19 мар 2021 в 13:02
121 6 6 бронзовых знаков
Вариант забавный, но 1) он меняет исходные списки, 2) повторяет функционал itertools.zip_longest
19 мар 2021 в 13:10
Так то пусть будет, разные ответы это хорошо )
19 мар 2021 в 13:19
согласен, не без недостатков, но как вариант для "по быстрому"
19 мар 2021 в 13:20
добавил варианты без изменения исходных списков и вариант для Python 3.8 без повтора функционала
19 мар 2021 в 13:54
Если вы еще не "прошли 'from' 'import'", то наиболее простой вариант выглядит вот так:
с=list(map(lambda x, y: x + y, a, b))
c1 = [x+y for x,y in zip(a,b)] + (a if len(a) >= len(b) else b)[min(len(a), len(b)):]
При необходимости обернуть это в вызов функции, надеюсь, сможете сделать самостоятельно: на вход a и b, указанные выражения - в качестве параметра в return.
Отслеживать
ответ дан 22 дек 2019 в 14:14
11.8k 2 2 золотых знака 10 10 серебряных знаков 16 16 бронзовых знаков
Спасибо тебе за ответ) мне нужно просто без комприхенш`на может просто через def и внутри def через for буду рад если поможете = )
23 дек 2019 в 8:51
Если у вас списка ВСЕГДА точно будут одной длины, то можно воспользоваться генератор списков и zip:
a = [1, 2, 3] b = [4, 5, 6] c = [x+y for x, y in zip(a, b)] print(c) #[5, 7, 9]
Но если вы НЕ уверены, что длина списков будет одинаковой хоть раз, то здесь нужно воспользоваться крутой библиотекой itertools:
from itertools import zip_longest a = [1, 2, 3] b = [4, 5, 6, 10] c = [x+y for x, y in zip_longest(a, b, fillvalue=0) #fillvalue нужен, если ваши списки разных рамеров и там где не достаёт элементов, добьёт нулями. print(c) #[5, 7, 9, 10]
Ответ на комментарий:
from itertools import zip_longest def add_list(a, b): c = [x+y for x, y in zip_longest(a, b, fillvalue=0)] return c a = [1, 2, 3] b = [4, 5, 6, 10] summ_list = add_list(a, b) print(summ_list)
Списки в Python — 10 примеров работы с функциями и методами
Списки в Python — это составная структура данных, которая позволяет собирать значения в одном месте. В других языках они чаще всего называются динамическими массивами данных. Списки — изменяемый (immutable) тип данных. Это означает, что список можно изменять, например путем добавления или удаления значений.
Какой у списков в Python формальный синтаксис?
[value, value, . ] list([iterable])
Для чего вообще нужны списки?
Списки в Python — одна из 4 структур данных, предназначенных для работы с итерируемыми объектами. Представим, что нам нужно написать скрипт, который проверяет, является ли модель машины производства компании Tesla. Код будет выглядеть следующим образом:
Что еще можно делать со списками в Python?
Ниже собраны примеры решений задач на основные вопросы, с которыми сталкиваются Python разработчики и дата-саентисты:
- Как узнать длину списка в Python?
- Как проверить, существует ли элемент в списке?
- Как получить значение из списка по индексу?
- Как перебрать значения списка в Python?
- Какие есть методы списков в Python?
- Как получить значение по индексу из многомерного списка в Python?
- Как проверить, что список пустой?
- All и any в Python — как проверить, что каждое или любое значение списка соответствует критерию?
- Как сравнить списки в Python?
- Как удалить дубликаты в списке?
Как узнать длину списка в Python?
Функция len() , позволяет получить одномерную длину списка.
len(['one', 'two']) # вернет 2 len(['one', [2, 3], 'four']) # вернет 3, а не 4
len() также работает со строками, словарями и другими структурами данных, схожими со списками.
Обратите внимание, что len() — это встроенная функция, а не метод списка.
Производительность функции len() равна O(1) (константная), то есть скорость получения длины списка не зависит от его длины.
Как проверить, существует ли элемент в списке?
За проверку вхождения значения в список отвечает оператор in .
lst = ['test', 'twest', 'tweast', 'treast'] 'test' in lst # True 'toast' in lst # False
Примечание: оператор in в множествах асимптотически быстрее, чем в списках. Если его предстоит использовать много раз в потенциально больших списках, вы можете преобразовать список во множество (set) и проверить наличие значений во множестве.
lst = ['test', 'twest', 'tweast', 'treast'] slst = set(lst) 'test' in slst #True
Как получить значение списка по индексу?
У каждого элемента списка есть свой уникальный номер. Этот номер называется индексом. Списки в Python имеют нулевую индексацию, как у массивов в других языках. Это означает, что первый элемент списка имеет индекс 0, второй элемент — индекс 1, третий — 2 и т. д.
lst = [1, 2, 3, 4] lst[0] # 1 lst[1] # 2
Если запросить элемент по индексу за пределами списка, Python выкинет исключение IndexError .
lst = [1, 2, 3, 4] lst[10] # IndexError: list index out of range
Отрицательные индексы интерпретируются как подсчёт с конца списка.
lst = [1, 2, 3, 4] lst[-1] # 4 lst[-2] # 3 lst[-5] # IndexError: list index out of range
То же действие можно воспроизвести следующим образом:
lst = [1, 2, 3, 4] lst[len(lst)-1] # 4
Списки в Python поддерживают слайсинг. Синтаксис слайса: lst[начало:конец:шаг] . Результатом слайса будет новый список, содержащий элементы от начала до конца - 1.
lst = [1, 2, 3, 4] lst[1:] # [2, 3, 4] lst[:3] # [1, 2, 3] lst[::2] # [1, 3] lst[::-1] # [4, 3, 2, 1] lst[-1:0:-1] # [4, 3, 2] lst[5:8] # [] поскольку начальный индекс больше # длины lst, возвращает пустой список lst[1:10] # [2, 3, 4] то же, что опускание конечного индекса
Слайсингом можно развернуть список в обратную сторону:
lst = [1, 2, 3, 4] lst[::-1] # [4, 3, 2, 1]
Как перебрать значения списка в Python?
Python позволяет использовать цикла for со списками:
my_list = ['foo', 'bar', 'baz'] for item in my_list: print(item) # foo # bar # baz
Индекс текущего элемента в цикле можно получить используя функцию enumerate:
for (index, item) in enumerate(my_list): print('The item in position <>: <>'.format(index, item)) # The item in position 0: foo # The item in position 1: bar # The item in position 2: baz
Так же, можно проходить по списку используя функцию range. Range генерирует ряд чисел в рамках заданного диапазона, соответственно началом диапазона является число 0 (индекс первого элемента), а концом индекс последнего элемента. Len возвращает длину списка, так как индекс первого элемента является нулем, вычитать из длины списка единицу не нужно, индекс последнего элемента будет соответствовать длине списка:
for i in range(0, len(my_list)): print(my_list[i]) # foo # bar # baz
Ранее отмечалось, что списки являются изменяемой (или иммютабельной, от англ. immutable) структурой данных. Это означает, что если изменить список во время итерации, мы можем получить неожиданные результаты, например:
for item in my_list: if item == 'foo': del my_list[0] print(item) # Вывод: # foo # baz
В примере мы удалили первый элемент на первой итерации изменив список, что привело к пропуску bar. На второй итерации, baz стал вторым элементом списка.
Какие есть методы списков в Python?
Метод списка append
append(value) — позволяет добавить новый элемент в конец списка.
a = [1, 2, 3, 4, 5] # Добавим значения 6, 7, и 7 в список a a.append(6) a.append(7) a.append(7) # a: [1, 2, 3, 4, 5, 6, 7, 7] # Добавим к значениям списка другой список b = [8, 9] a.append(b) # a: [1, 2, 3, 4, 5, 6, 7, 7, [8, 9]] # Если вы добавляете список к списку, добавляемый # вами будет одним элементом в конце первого # списка. Для расширения списка используйте метод extends # Добавим к списку элемент другого типа my_string = "hello world" a.append(my_string) # a: [1, 2, 3, 4, 5, 6, 7, 7, [8, 9], "hello world"]
Метод списка extends
extends (enumerable) — расширяет список, добавляя элементы переданного итерируемого объекта.
a = [1, 2, 3, 4, 5, 6, 7, 7] b = [8, 9, 10] a.extend(b) # Добавляем в список a все элементы из списка b # a: [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10] a.extend(range(3)) # Добавляем в список a все элементы # последовательности (0, 1, 2) # a: [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10, 0, 1, 2]
Списки также можно объединять с помощью оператора +. При этом, оператор + не изменяет список, а создает новый.
a = [1, 2, 3, 4, 5, 6] + [7, 7] + b # a: [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10]
Метод списка index
index (value, [startIndex]) — возвращает индекс первого вхождения значения. Если вводного значения нет в списке, возникнет исключение ValueError. Если указан второй аргумент, поиск начнется с указанного индекса.
a = [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10] a.index(7) # Вернется 6 a.index(49) # Возникнет исключение ValueError, # т. к. значения 49 нет в списке a. a.index(7, 7) # Вернется 7 a.index(7, 8) # Возникнет ValueError, т. к. в списке a нет # значения 7, которое начиналось бы с индекса 8
Метод списка insert
insert (index, value) — добавляет значение value непосредственно перед указанным индексом index. После вставки новое значение занимает индекс index.
a = [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10] a.insert(0, 0) # вставляет 0 на позицию 0 a.insert(2, 5) # вставляет 5 на позицию 2 a # [0, 1, 5, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10]
Метод списка pop
pop([index]) — удаляет и возвращает значение по индексу index. Без аргумента index удаляет и возвращает последний элемент списка.
a = [0, 1, 5, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10] a.pop(2) # Возвращает 5 # a: [0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10] a.pop(8) # Возвращает 7 # a: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # Без аргумента: a.pop() # Возвращает: 10 # a: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Метод списка remove
remove(value) — удаляет первое вхождение указанного значения. Если указанного значения нет в списке, выдаётся исключение ValueError.
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] a.remove(0) a.remove(9) # a: [1, 2, 3, 4, 5, 6, 7, 8]
Метод списка reverse
reverse() — переворачивает список задом наперёд и возвращает None.
a = [1, 2, 3, 4, 5, 6, 7, 8] a.reverse() # a: [8, 7, 6, 5, 4, 3, 2, 1]
Метод списка count
count(value) — подсчитывает количество появлений значения в списке.
a = [1, 2, 3, 4, 5, 6, 7, 7] a.count() # 2
Метод списка sort
sort() — сортирует список в числовом и лексическом порядке и возвращает None
a = [1, 2, 3, 4, 5, 6, 7, 8] a.sort() # Отсортирует список в числовом порядке # a = [1, 2, 3, 4, 5, 6, 7, 8]
Списки также можно сортировать в обратном порядке используя флаг reverse=True в методе sort().
a = [1, 2, 3, 4, 5, 6, 7, 8] a.sort(reverse=True) # a = [8, 7, 6, 5, 4, 3, 2, 1]
Для сортировки списка по атрибутам элементов, можно использовать аргумент key:
class Person(object): def __init__(self, name, height): self.name = name self.height = height def __repr__(self): return self.name lst = [Person("John Cena", 175), Person("Chuck Norris", 180), Person("Jon Skeet", 185)] # Отсортируется по аттрибуту name lst.sort(key=lambda item: item.name) lst # [Chuck Norris, John Cena, Jon Skeet] # Отсортируется по аттрибуту height lst.sort(key=lambda item: item.height) lst # lst: [John Cena, Chuck Norris, Jon Skeet]
Метод списка clear
clear() — удаляет все элементы из списка
a = [1, 2, 3, 4, 5, 6, 7, 8] a.clear() a # []
Метод списка copy
copy() — возвращает пустую копию списка.
a = [1, 2, 3, 4, 5] aa = a.copy() aa # [1, 2, 3, 4, 5]
Как получить значение по индексу из многомерного списка в Python?
Список списков называется многомерным списком, возможная глубина не ограничена. Список списков является двумерным, список списков списков — трехмерным и т. д.
Доступ к значениям многомерного списка:
alist = [[[1,2],[3,4]], [[5,6,7],[8,9,10], [12, 13, 14]]] # Значение второго элемента в первом списке первого списка print(alist[0][0][1]) # Выведет 2 # Значение третьего элемента во втором списке # второго списка втором списк print(alist[1][1][2]) # Выведет 10
Использование методов списков на примере добавления значения в мгогомерный список:
alist = [[[1,2],[3,4]], [[5,6,7],[8,9,10], [12, 13, 14]]] alist[0][0].append(11) # Добавим значение 11 в конец первого списка в первом списке print(alist[0][0][2]) # Выведет 11
Использование вложенных циклов for для обхода многомерного списка:
alist = [[[1,2,11], [3,4]], [[5,6,7],[8,9,10], [12, 13, 14]]] # Один из способов циклического обхода многомерных списков for row in alist: for col in row: print(col) # Вывод: # [1, 2, 11] # [3, 4] # [5, 6, 7] # [8, 9, 10] # [12, 13, 14]
Использование слайсов в многомерном списке:
alist = [[[1,2,11], [3,4]], [[5,6,7],[8,9,10], [12, 13, 14]]] print(alist[1][1:]) #[[8, 9, 10], 15, [12, 13, 14]]
Как проверить, что список пустой?
Пустой список эквивалентен значению False, поэтому не нужно проверять len(lst) == 0, а достаточно вызвать lst или not lst:
alst = [] if not lst: print("list is empty") # "List is empty"
All и any в Python — как проверить, что каждое или любое значение списка соответствует критерию?
Функция all() помогает определить, все ли значения итерируемого объекта соответствуют значению True
nums = [1, 1, 0, 1] all(nums) # False chars = ['a', 'b', 'c', 'd'] all(chars) # True
Аналогично, any() определяет, соответствует ли одно или несколько значений в итерируемом объекте значению True
nums = [1, 1, 0, 1] any(nums) # True vals = [None, None, None, False] any(vals) # False
All и any удобно использовать с генераторами:
vals = [1, 2, 3, 4] any(val > 12 for val in vals) # False any((val * 2) > 6 for val in vals) # True
Как сравнить списки в Python?
Python поддерживает лексическое сравнение списков с помощью операторов сравнения. Оба операнда должны быть одного типа.
[1, 10, 100] < [2, 10, 100] # True, потому что 1 < 2 [1, 10, 100] < [1, 10, 100] # False, потому что списки равны [1, 10, 100]
Если один из списков содержится в начале другого, выигрывает самый короткий список.
[1, 10] < [1, 10, 100] # True
Как удалить дубликаты в списке?
Удаление повторяющихся значений в списке можно сделать путём преобразования списка во множество (set). Множества представляют собой неупорядоченную коллекцию уникальных значений. Если требуется сохранить структуру данных в виде списка, то множество можно преобразовать обратно в список с помощью функции list():
names = ["aixk", "duke", "edik", "tofp", "duke"] list(set(names)) # ['duke', 'tofp', 'aixk', 'edik']
Обратите внимание, что при преобразовании списка во множество теряется исходный порядок. Для сохранения исходного порядка можно использовать OrderedDict.
import collections collections.OrderedDict.fromkeys(names).keys() # ['aixk', 'duke', 'edik', 'tofp']
Упражнение
Добавьте числа 1 , 2 и 3 в список numbers , а слова hello и word — в переменную strings .
Затем, заполнить переменную second_name вторым значением из списка names, используя оператор [] . Обратите внимание, что индекс начинается с нуля, поэтому, если вы хотите получить доступ ко второму элементу в списке, его индекс будет равен 1.
Решение упражнения
numbers = [] strings = [] names = ["John", "Eric", "Jessica"] # напишите ниже свой код numbers.append(1) numbers.append(2) numbers.append(3) strings.append("hello") strings.append("world") second_name = names[1] print(numbers) print(strings) print("The second name on the names list is %s" % second_name)