Как работать со списками кратко
Обновлено: 04.07.2024
Списки в Python представляют собой упорядоченные изменяемые наборы объектов, пронумерованных от 0. При этом объекты могут быть разными — от целых чисел до строк. Списки могут также хранить в себе списки.
В статье разберёмся с базовыми принципами списков в Питоне, а также рассмотрим методы работы с ними. Если вы изучаете Python с нуля, предлагаем также ознакомиться с дорожной картой для начинающих.
Хранение в памяти
При создании списка, в памяти резервируется пустая область. С одной стороны, это ничем не отличается от создания любого другого типа данных, но разница в том, что содержимое list может меняться:
До замены элемента последовательности print(numbers[1]) выведет 2, а после замены — 3.
Создание списка в Python
Это можно сделать несколькими способами, например перечислением элементов списка в квадратных скобках:
При этом единица будет на позиции 0, то есть print(numbers[0]) выведет 1.
Также можно использовать обработку итерируемого объекта функцией list() . Пусть у нас будет некоторая строка, тогда:
Также существуют генераторы списков, которые позволяют применить заданное выражение к каждому элементу последовательности. Допустим, необходимо создать list, состоящий из чисел от 1 до 5 включительно:
Срезы (slice) списка
Срезы позволяют получить некое подмножество значений. Следующий код вернёт список с элементами, начиная индексом 0 и не включая при этом индекс 2 и выше:
Далее выведем всё, за исключением элемента на позиции 3:
А теперь начиная с индекса 1 и до конца:
Операции над списками Python
- x in l — true , если элемент x есть в списке l ;
- x not in l — true , если элемент x отсутствует в l ;
- l1 + l2 — объединение двух списков;
- l * n , n * l — копирует список n раз;
- len(l) — количество элементов в l ;
- min(l) — наименьший элемент;
- max(l) — наибольший элемент;
- sum(l) — сумма чисел списка;
- for i in list() — перебирает элементы слева направо.
Методы списков Python
Index
Возвращает положение первого совпавшего элемента. Поиск совпадения происходит слева направо. Пример:
Count
Данный метод считает, сколько раз указанное значение появляется в списке Python:
Append
Добавляет указанное значение в конец:
Сортирует список в Пайтоне. По умолчанию от меньшего к большему:
Также можно сортировать последовательность элементов от большего к меньшему:
Insert
Вставляет элемент перед указанным индексом:
Remove
Удаляет первое попавшееся вхождение элемента в списке Python:
Extend
Подобно методу append() , добавляет элементы, но преимущество метода extend() в том, что он также позволяет добавлять списки:
А данный метод удаляет элемент в конкретно указанном индексе, а также выводит удалённый элемент. Если индекс не указан, метод по умолчанию удалит последний элемент:
Преобразовывает список в строку. Разделитель элементов пишут в кавычках перед методом, а сам список Питона должен состоять из строк:
Я представляю список в Word живым организмом, который может жить и развиваться только при правильном подходе. Вы же не кормите любимого котёнка просроченными консервами? Вы соблюдаете все правила ухода за маленькими детьми? Вы чистите зубы два раза в день?
По окончании урока вы сможете:
- Задать одноуровневый список и многоуровневый список
- Перечислить правила работы со списками
1. Одноуровневый и многоуровневый список
(1) маркированный список
(2) нумерованный список
(3) многоуровневый список
На уроке 21 мы знакомились с этими кнопками. Но сейчас нам важно понять разницу при создании этих списков.
Откройте скачанный документ. Я создала в документе таблицу из двух ячеек. В ячейках два абсолютно одинаковых текста. Ну просто старый знакомый текст! Приступим?
Шаг 1. Выделите текст в первой ячейке. Здесь мы не можем воспользоваться выделением на полосе выделения, иначе мы выделим всю таблицу:
Можно выделить перетаскиванием, но я считаю, что это очень вредно для лучезапястной мышцы. Поступим следующим образом:
Я рассказывала о различных видах выделения на уроке 2, но повторить никогда не помешает.
Шаг 2. Задаём на выделенный текст Нумерованный список: лента Главная → группа команд Абзац → кнопка Нумерованный список:
Шаг 3. Выделите текст во второй ячейке.
Давайте сделаем отметочку в памяти. Нам эта отметочка ещё пригодится, когда мы с вами доберёмся до таблиц.
Шаг 4. Задаём на выделенный текст Многоуровневый список: лента Главная → группа команд Абзац → кнопка Многоуровневый список.
Получили такую картину:
Итак, мы имеем два абсолютно одинаковых списка. Ну разве что отступы у них разные
Напоминаю вам Урок 26. Уменьшить отступ или увеличить отступ. На самом деле эти кнопки повышают или понижают уровень в списке.
2. Правила работы со списками
В качестве детской забавы проделайте такую операцию:
Ко мне часто обращаются с вопросами, как правильно сделать список в Word. Для себя я давно вывела три важных правила работы со списками:
С оздание списка в Python может понадобиться для хранения в них коллекции объектов. Списки могут хранить объекты всех типов в одном, в отличие от массива в другом языке программирования. Также размер списка доступен к изменению.
Ниже разберёмся, как устроены списки, как с ними работать и приведём 6 примеров из практики.
Что такое список
Список (list) — тип данных, предназначенный для хранения набора или последовательности разных элементов.
Его можно сравнить со списком покупок для магазина: точно так же вносятся элементы, их тоже можно добавлять и корректировать.
Как списки хранятся в памяти?
Базовая C-структура списков в Python (CPython) выглядит следующим образом:
Когда мы создаём список, в памяти под него резервируется объект, состоящий из 3-х частей:
- PyObject_VAR_HEAD — заголовок;
- ob_item — массив указателей на элементы списка;
- allocated — количество выделенной памяти под элементы списка.
Объект списка хранит указатели на объекты, а не на сами объекты
Python размещает элементы списка в памяти, затем размещает указатели на эти элементы. Таким образом, список в Python — это массив указателей.
Базовая работа со списками
Объявление списка
Объявление списка — самый первый и главный этап его создания. Для объявления списка в Python существует несколько способов.
Вариант №1 : Через литерал (выражение, создающее объект):
>>> elements = [1, 3, 5, 6] >>> type(elements) >>> print(elements) [1, 3, 5, 6]
В данном примере мы создали список с заранее известными данными. Если нужен пустой список, в квадратных скобках ничего не указывается — elements = [] .
Вариант №2 : Через функцию list() :
>>> elements = list() >>> type(elements) >>> print(elements) []
В этом примере создается пустой список.
Обращение к элементу списка в Python
Некоторые операции, рассмотренные выше, имеют два варианта выбора элемента: либо выбор непосредственно его по имени, либо обращение по индексу. Индексом называют его порядковый номер, начиная с нуля.
Существует также отрицательный индекс, рассмотрим на примере:
elements = [1, 2, 3, 'word']
Индексы (позиции в списке) соответственно будут: 0, 1, 2, 3 .
Нумерация элементов списка в Python начиная с нуля
Отрицательными индексами называют расположение элементов в списке справа налево, то есть индекс значения "1" будет -4, а отрицательный индекс 'word' будет -1.
>>> elements[-4] 1 >>> elements[-1] 'word'
💡 Отрицательным индексом удобно пользоваться, когда необходимо обратиться к последнему в списке элементу, не высчитывая его номер. Любой конечный элемент будет с индексом, равным -1.
Добавление в список
В списках доступно добавление, изменение, удаление элементов. Рассмотрим каждый способ изменения элементов на примерах.
Для того чтобы добавить новый элемент в список, используется list.append(x) , где list — список, x — нужное значение.
>>> elements = [1, 2, 3, 'word'] >>> elements.append('meow') >>> print(elements) [1, 2, 3, 'word', 'meow']
Для простого примера, рассмотрим создание списка с нуля с помощью метода append() :
>>> elements = [] >>> elements.append(1) >>> elements.append('word') >>> elements.append('meow') >>> print(elements) [1, 'word', 'meow']
Добавление в список на указанную позицию
Немаловажно обратить внимание на метод list.insert(i, x) , где list — список, i — позиция, x — нужное значение.
>>> elements = [1, 2, 4] >>> print(elements) [1, 2, 4] >>> elements.insert(2, 3) >>> print(elements) [1, 2, 3, 4]
Изменение элементов списка
Изменение элементов списка происходит следующим образом: нужно выбрать элемент по индексу (порядковому номеру элемента) и присвоить новое значение.
>>> elements = [2, 4, 6] >>> elements[2] = 8 >>> print(elements) [2, 4, 8]
В примере выше мы заменили 6 на 8.
Не забывайте, что счёт начинается с нуля, и в данном списке цифра 6 это 2-й элемент
Удаление элемента из списка
Для удаление из списка используют инструкцию del list[i] , где list — список, i — индекс (позиция) элемента в списке:
>>> elements = [1, "test", 5, 7] >>> del elements[1] >>> print(elements) [1, 5, 7]
Удалять можно как из текущего списка, так и из вложенных списков:
>>> my_list = ["hello", "world", "!"] >>> elements = [1, my_list, "ok"] >>> del elements[1][2] >>> print(elements) [1, ['hello', 'world'], 'ok']
Можно удалять целыми диапазонами:
Еще один способ удаления из списка — list.remove(x) , где list — список, x — значение, которое нужно удалить:
>>> elements = [2, "test", 4] >>> elements.remove("test") >>> print(elements) [2, 4]
Как проверить наличие элемента в списке
Для того чтобы проверить существование какого-либо элемента в списке, нужно воспользоваться оператором in . Рассмотрим на примере:
>>> elements = ['слон', 'кот', 'лошадь', 'змея', 'рыба'] >>> if 'кот' in elements: print('meow') meow
Объединение списков
Списки в Python можно объединять с помощью оператора + или метода extend . Выглядит это так:
Копирование списка Python
Если вы захотите скопировать список оператором = , вы скопируете не сам список, а только его ссылку.
Для копирования списков можно использовать несколько вариантов:
- elements.copy() — встроенный метод copy (доступен с Python 3.3);
- list(elements) — через встроенную функцию list() ;
- copy.copy(elements) — функция copy() из пакета copy;
- elements[:] — через создание среза (устаревший синтаксис).
Рассмотрим на примере каждый из этих способов:
Важно : copy.copy(a) делает поверхностное копирование. Объекты внутри списка будут скопированы как ссылки на них (как в случае с оператором = ). Если необходимо рекурсивно копировать всех элементов в списке, используйте copy.deepcopy(a)
Цикл по списку
Для перебора списков в Python есть два цикла: for и while .
elements = [1, 2, 3, "meow"] for el in elements: print(el)
Попробуем построить цикл while . Он выполняется, когда есть какое-либо определённое условие:
elements = [1, 2, 3, "meow"] elements_len = len(elements) i = 0 while i
Из примеров выше можем сделать вывод, что конструкция for выглядит заметно компактнее, чем while .
Методы списков
- list.append(x) — позволяет добавлять элемент в конец списка;
- list1.extend(list2) — предназначен для сложения списков;
- list.insert(i, x) — служит для добавления элемента на указанную позицию( i — позиция, x — элемент);
- list.remove(x) — удаляет элемент из списка (только первое вхождение);
- list.clear() — предназначен для удаления всех элементов (после этой операции список становится пустым []);
- list.copy() — служит для копирования списков.
- list.count(x) — посчитает количество элементов x в списке;
- list.index(x) — вернет позицию первого найденного элемента x в списке;
- list.pop(i) — удалит элемент из позиции i ;
- list.reverse() — меняет порядок элементов в списке на противоположный;
- list.sort() — сортирует список.
Пример использования методов:
Вложенные списки
Список может содержать объекты разных типов: числовые, буквенные, а также списки. Список списков выглядит следующим образом:
>>> elements = [1, 2, [0.1, 0.2, 0.3]]
Для обращения к элементу вложенного списка нужно использовать два индекса: первый указывает на индекс главного списка, второй — индекс элемента во вложенном списке. Вот пример:
>>> elements = [["яблоки", 50], ["апельсины", 190], ["груши", 100]] >>> print(elements[0]) ['яблоки', 50] >>> print(elements[1][0]) апельсины
Срезы
Срезы (slices) — это подмножества элементов списка. Срезу нужны, когда необходимо извлечь часть списка из полного списка.
У них есть свой собственный синтаксис. Записывается срез так же, как обращение к элементу, используя индекс. Пример:
В этом случае берётся срез от номера start (включительно) до stop (не включая его), а step — это шаг. По умолчанию start и stop равны 0, step равен 1.
Генераторы списков
Генератором списка называется способ построения списка с применением выражения к каждому элементу, входящему в последовательность. Есть схожесть генератора списка и цикла for . На этом примере мы рассмотрим простейший генератор списков:
>>> c = [c * 3 for c in 'list'] >>> print(c) ['lll', 'iii', 'sss', 'ttt']
Таким образом мы получили отдельно взятые утроенные буквы слова, введённого в кавычки. Есть множество вариантов применения генератора списков.
Пример генератора списка:
>>> nums = [i for i in range(1, 15)] >>> print(nums) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
>>> c = [c + d for c in 'list' if c != 'i' for d in 'spam' if d != 'a'] >>> print(c) ['ls', 'lp', 'lm', 'ss', 'sp', 'sm', 'ts', 'tp', 'tm']
Это усложнённая конструкция генератора списков, в которой мы сделали все возможные наборы сочетаний букв из введённых слов. Буквы-исключения видны по циклу, где стоит знак != для одной переменной и другой.
Best Practices
Последние абзацы статьи будут посвящены лучшим решениям практических задач, с которыми так или иначе сталкивается Python-разработчик.
Как получить список в обратном порядке
Изменить порядок размещения элементов в списке помогает функция list.reverse() :
>>> elements = [1, 2, 3, 4, 5, 6] >>> elements.reverse() >>> print(elements) [6, 5, 4, 3, 2, 1]
Как перевести список в другой формат?
Иногда требуется перевести список в строку, в словарь или в JSON. Для этого нужно будет вывести список без скобок.
Перевод списка в строку осуществляется с помощью функции join(). На примере это выглядит так:
>>> fruits = ["яблоко", "груша", "ананас"] >>> print(', '.join(fruits)) яблоко, груша, ананас
В данном случае в качестве разделителя используется запятая.
Словарь в Python — это такая же встроенная структура данных, наряду со списком. Преобразование списка в словарь — задача тоже несложная. Для этого потребуется воспользоваться функцией dict() . Вот пример преобразования:
>>> elements = [['1', 'a'],['2', 'b'],['3', 'c']] >>> my_dict = dict(elements) >>> print(my_dict)
JSON — это JavaScript Object Notation. В Python находится встроенный модуль json для кодирования и декодирования данных JSON. С применением метода json.dumps(x) можно запросто преобразовать список в строку JSON.
>>> import json >>> json.dumps(['word', 'eye', 'ear']) '["word", "eye", "ear"]'
Как узнать индекс элемента в списке?
Узнать позицию элемента в последовательности списка бывает необходимым, когда элементов много, вручную их не сосчитать, и нужно обращение по индексу. Для того чтобы узнать индекс элемента, используют функцию list.index(x) .
>>> elements = [1, 3, 6, 9, 55] >>> print(elements.index(9)) 3
В качестве аргумента передаем значение, а на выходе получаем его индекс.
Как посчитать количество уникальных элементов в списке?
Самый простой способ — приведение списка к set (множеству). После этого останутся только уникальные элементы, которые мы посчитаем функцией len() :
>>> words = ["one", "two", "one", "three", "one"] >>> len(set(words)) 3
Как проверить список на пустоту?
Как создать список числовых элементов с шагом
Создание списка числовых элементов с шагом может понадобиться не так и часто, но мы рассмотрим пример построения такого списка.
Шагом называется переход от одного элемента к другому. Если шаг отрицательный, произойдёт реверс массива, то есть отсчёт пойдёт справа налево. Вот так выглядит список с шагом.
>>> elements = [1, 2, 3, 4, 5, 8, 9, 10, 11, 14, 20] >>> print(elements[0:11:2]) [1, 3, 5, 9, 11, 20]
Еще один вариант — воспользоваться генератором списков:
При разработке на языке Python, списки встречаются довольно часто. Знание основ работы со списками поможет быстро и качественно писать программный код 😉.
Рисунок 1. Панель для работы со списками
Одноуровневый маркированный и нумерованный список
Можно пойти иным путем: сначала набрать несколько абзацев текста, а потом выделить их и нажать соответствующую кнопку создания списка (маркированного или нумерованного).
Рисунок 2. Выбор маркера для списка
Рисунок 3. Выбор способа нумерации
В результате вы получите маркированный или нумерованный список, полностью настроенный под ваши потребности. Чтобы превратить список обратно в обычный текст, разделенный на абзацы, его нужно выделить и нажать на кнопку маркированного или нумерованного списка.
Пример 1. Варианты форматирования одного и того же текста
Вы видите 20% этой статьи. Выберите свой вариант доступа
Читайте все накопления сайта по своему профилю, начиная с 2010 г.
Для этого оформите комплексную подписку на выбранный журнал на полугодие или год, тогда:
- его свежий номер будет ежемесячно приходить к вам по почте в печатном виде;
- все публикации на сайте этого направления начиная с 2010 г. будут доступны в течение действия комплексной подписки.
А удобный поиск и другая навигация на сайте помогут вам быстро находить ответы на свои рабочие вопросы. Повышайте свой профессионализм, статус и зарплату с нашей помощью!
Рекомендовано для вас
Система электронного документооборота: путь от меньшего к большему
Руководитель отдела делопроизводства описывает свой личный опыт работы в СЭД на различных предприятиях: какие несовершенства функционала постепенно устраняли; что стоит предусмотреть в ТЗ на доработку СЭД; примеры блок-схем, которые желательно включать в ТЗ, чтобы служба делопроизводства и ИТ-отдел лучше понимали друг друга.
Создание диаграмм в MS Excel
Показываем базовые возможности MS Excel по переводу данных таблицы в диаграммы: для каких задач какие виды диаграмм лучше работают; как их создать (даем пошаговый алгоритм), что можно корректировать в них (например, что отображать по вертикали, что по горизонтали гистограммы, а что цветом).
Как перенести таблицу из Excel в Word
В Excel удобно делать расчеты и диаграммы, а в Word – составлять документы (планы, отчеты, акты, письма и др.), оформляя их по всем правилам. Можно объединить сильные стороны этих программ, заглатывая в Word таблицы и диаграммы, созданные в Excel: в виде картинки (которую уже нельзя будет изменить), в виде текстовой таблицы или просто текста (их можно будет доформатировать в Word) или даже с установкой связи между исходным объектом в Excel и транслируемым в Word (тогда при изменении в Excel объект в Word будет синхронизироваться автоматически). Эти удобные варианты копирования объясняем на примерах.
Реформа применения электронных подписей. немного сбоит
Электронные подписи (ЭП) уже есть у большинства организаций. Что надо успеть сделать с ними до нового 2022 года. Как меняются планы на 2022 год в отношении электронных доверенностей, необходимых для применения электронных подписей физлиц в служебных целях.
Режим рецензирования в Word: автоматическое выявление правок
Презентация годового отчета и плана
Раскрыты секреты создания эффектной презентации в современном стиле для деловых отчетов и планов: как сделать данные наглядными, как привлекать внимание, как лучше форматировать гистограммы и диаграммы, как использовать шрифты, цвета и картинки, где взять бесплатные фото и иконки. Описаны интересные возможности программы PowerPoint из Microsoft Office, которые стоит применять.
Контроль исполнения поручений в MS Excel
Автор напоминает основные принципы организации контроля исполнения поручений, а потом подробно объясняет, как удобнее автоматизировать эту работу с использованием стандартных возможностей MS Excel (какие поля в таблице регистрационной формы пригодятся, как настроить фильтрацию данных и пользоваться ею, какие сведения удобно выделять автоматически). Статья особенно пригодится тем, кому на покупку специализированного программного обеспечения для автоматизации делопроизводства денег пока не дают.
Работа над ошибками при помощи рецензирования в MS Word
Microsoft Word – это не только отличная программа для набора и форматирования текста, но и прекрасное средство для исправления чужих ошибок и совместной работы над документами. Мы хотим избавить вас от необходимости вычитывания каждой версии проекта документа. Пусть вместо вас это сделает Word, пусть он выявит все внесенные правки и предложит вам каждую из них отклонить или принять. Мы объясним, как управлять составом информации, которая отображается на экране монитора о произведенных в документе изменениях; как выявить правки и комментарии, внесенные определенным автором; какие алгоритмы действий будут наиболее удобными при анализе и принятии / отклонении исправлений.
Читайте также:
- Какое значение в жизни беззубок и перловиц имеет развитие со стадией личинки кратко
- В чем причины реформ просвещенного абсолютизма мои исторические исследования кратко
- Одежда из каких тканей преобладает в вашем гардеробе кратко
- Какие травмы глаз можно получить и как предотвратить их обж кратко
- Что такое кератомикоз кратко