Как сделать перечисление в питоне

Обновлено: 06.07.2024

Для работы с наборами данных Python предоставляет такие встроенные типы как списки, кортежи и словари.

Список (list) представляет тип данных, который хранит набор или последовательность элементов. Для создания списка в квадратных скобках ([]) через запятую перечисляются все его элементы. Во многих языках программирования есть аналогичная структура данных, которая называется массив. Например, определим список чисел:

Также для создания списка можно использовать конструктор list() :

Оба этих определения списка аналогичны - они создают пустой список.

Конструктор list для создания списока может принимать другой список:

Для обращения к элементам списка надо использовать индексы, которые представляют номер элемента в списка. Индексы начинаются с нуля. То есть второй элемент будет иметь индекс 1. Для обращения к элементам с конца можно использовать отрицательные индексы, начиная с -1. То есть у последнего элемента будет индекс -1, у предпоследнего - -2 и так далее.

Если необходимо создать список, в котором повторяется одно и то же значение несколько раз, то можно использовать символ звездочки *. Например, определим список из шести пятерок:

Кроме того, если нам необходим последовательный список чисел, то для его создания удобно использовать функцию range , которая имеет три формы:

range(end) : создается набор чисел от 0 до числа end

range(start, end) : создается набор чисел от числа start до числа end

range(start, end, step) : создается набор чисел от числа start до числа end с шагом step

Например, следующие два определения списка будут аналогичны, но за счет функции range мы сокращаем объем кода:

Список необязательно должен содержать только однотипные объекты. Мы можем поместить в один и тот же список одновременно строки, числа, объекты других типов данных:

Перебор элементов

Для перебора элементов можно использовать как цикл for, так и цикл while.

Перебор с помощью цикла for:

Здесь вместо функции range мы сразу можем подставить имеющийся список companies.

Перебор с помощью цикла while:

Для перебора с помощью функции len() получаем длину списка. С помощью счетчика i выводит по элементу, пока значение счетчика не станет равно длине списка.

Сравнение списков

Два списка считаются равными, если они содержат один и тот же набор элементов:

В данном случае оба списка будут равны.

Методы и функции по работе со списками

Для управления элементами списки имеют целый ряд методов. Некоторые из них:

append(item) : добавляет элемент item в конец списка

insert(index, item) : добавляет элемент item в список по индексу index

remove(item) : удаляет элемент item. Удаляется только первое вхождение элемента. Если элемент не найден, генерирует исключение ValueError

clear() : удаление всех элементов из списка

index(item) : возвращает индекс элемента item. Если элемент не найден, генерирует исключение ValueError

pop([index]) : удаляет и возвращает элемент по индексу index. Если индекс не передан, то просто удаляет последний элемент.

count(item) : возвращает количество вхождений элемента item в список

sort(Как сделать перечисление в питоне) : сортирует элементы. По умолчанию сортирует по возрастанию. Но с помощью параметра key мы можем передать функцию сортировки.

reverse() : расставляет все элементы в списке в обратном порядке

Кроме того, Python предоставляет ряд встроенных функций для работы со списками:

len(list) : возвращает длину списка

sorted(list, Как сделать перечисление в питоне) : возвращает отсортированный список

min(list) : возвращает наименьший элемент списка

max(list) : возвращает наибольший элемент списка

Добавление и удаление элементов

Для добавления элемента применяются методы append() и insert , а для удаления - методы remove() , pop() и clear() .

Проверка наличия элемента

Если определенный элемент не найден, то методы remove и index генерируют исключение. Чтобы избежать подобной ситуации, перед операцией с элементом можно проверять его наличие с помощью ключевого слова in :

Выражение item in companies возвращает True, если элемент item имеется в списке companies. Поэтому конструкция if item in companies может выполнить последующий блок инструкций в зависимости от наличия элемента в списке.

Подсчет вхождений

Если необходимо узнать, сколько раз в списке присутствует тот или иной элемент, то можно применить метод count() :

Сортировка

Для сортировки по возрастанию применяется метод sort() :

Если необходимо отсортировать данные в обратном порядке, то мы можем после сортировки применить метод reverse() :

При сортировке фактически сравниваются два объекта, и который из них "меньше", ставится перед тем, который "больше". Понятия "больше" и "меньше" довольно условны. И если для чисел все просто - числа расставляются в порядке возрастания, то для строк и других объектов ситуация сложнее. В частности, строки оцениваются по первым символам. Если первые символы равны, оцениваются вторые символы и так далее. При чем цифровой символ считается "меньше", чем алфавитный заглавный символ, а заглавный символ считается меньше, чем строчный. Подробнее про сравнение строк описывалось в статье Операции со строками.

Таким образом, если в списке сочетаются строки с верхним и нижним регистром, то мы можем получить не совсем корректные результаты, так как для нас строка "bob" должна стоять до строки "Tom". И чтобы изменить стандартное поведение сортировки, мы можем передать в метод sort() в качестве параметра функцию:

Кроме метода sort мы можем использовать встроенную функцию sorted , которая имеет две формы:

sorted(list) : сортирует список list

sorted(list, key) : сортирует список list, применяя к элементам функцию key

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

Минимальное и максимальное значения

Встроенный функции Python min() и max() позволяют найти минимальное и максимальное значения соответственно:

Копирование списков

При копировании списков следует учитывать, что списки представляют изменяемый (mutable) тип, поэтому если обе переменных будут указывать на один и тот же список, то изменение одной переменной, затронет и другую переменную:

Это так называемое "поверхностное копирование" (shallow copy). И, как правило, такое поведение нежелательное. И чтобы происходило копирование элементов, но при этом переменные указывали на разные списки, необходимо выполнить глубокое копирование (deep copy). Для этого можно использовать метод deepcopy() , который определен во встроенном модуле copy :

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

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

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

list[start:end] : параметр start указывает на индекс элемента, начиная с которого надо скопировать элементы

list[start:end:step] : параметр step указывает на шаг, через который будут копироваться элементы из списка. По умолчанию этот параметр равен 1.

Соединение списков

Для объединения списков применяется операция сложения (+):

Списки списков

Списки кроме стандартных данных типа строк, чисел, также могут содержать другие списки. Подобные списки можно ассоциировать с таблицами, где вложенные списки выполняют роль строк. Например:

Чтобы обратиться к элементу вложенного списка, необходимо использовать пару индексов: users[0][1] - обращение ко второму элементу первого вложенного списка.

Добавление, удаление и исменение общего списка, а также вложенных списков аналогично тому, как это делается с обычными (одномерными) списками:

Список в Python - это набор элементов, следующих в определенном порядке. Списки позволяют хранить в одном месте данные, сколько бы их не было, один элемент или тысяча элементов. В список можно поместить любую информацию, даже не связанную между собой. Так как список обычно содержит более одного элемента, рекомендуется называть их именем во множественном лице. Списки могут динамически изменять свои размеры, увеличиваясь и изменяясь во время выполнения программы. Кортежи в отличие от списков изменяться не могут. Длина кортежа определяется количеством элементов в нем, и в процессе выполнения программы изменяться не может. Списки и кортежи обладают многими общими возможностями.

1. Создание списка в Python.

В языке Python список обозначается квадратными скобками [ ]. В списках обычно хранятся однородные данные, то есть значения одного типа. Пример списка из пяти элементов.

cars = [ 'audi', 'bmw', 'ford', 'kia', 'land rover' ]

Так же в списках можно хранить разнородные данные, то есть разных типов. Например, в следующем списке хранится имя студента(строка), фамилия(строка), его средняя оценка(float), год окончания заведения(int)

id = [ 'Jon', 'Bond', 3.54, 2020 ]

2.1. Обращение к элементам списка Python.

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

>>> cars = [ 'audi', 'bmw', 'ford', 'kia', 'land rover' ]
>>> cars
['audi', 'bmw', 'ford', 'kia', 'land rover']
>>> cars [1]
'bmw'
>>> cars [1] .title()
'Bmw'

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

2.2. Индексы начинаются с 0, а не с 1.

В Python, как и во многих других языках, первый элемент имеет индекс 0, а не 1. Если при выполнении программы, вы получили неожиданный результат, то проверьте не допустили ли вы ошибку по смещению на 1. Второй элемент списка идет под индексом 1. Например, чтобы обратиться к третьему элементу списка, следует запросить элемент с номером 2. В следующем примеры выводятся элементы с индексом 1 и 3.

>>> cars = [ 'audi', 'bmw', 'ford', 'kia', 'land rover' ]
>>> cars[ 1 ]
'bmw'
>>> cars[ 3 ]
'kia'

>>> cars[ -1 ]
'land rover'
>>> cars[ -3 ]
'ford'

В Python есть возможность для обращения сразу к последнему элементу списка. Для этого нужно запросить элемент с индексом [-1] . Этот синтаксис так же распространяется и на другие отрицательные значения индексов. Индекс [-3] возвращает третий элемент с конца, и т.д.

3.1. Использование элементов списка в строках.

>>> cars = [ 'audi', 'bmw', 'ford', 'kia', 'land rover' ]
>>> message = f" Мой первый автомобиль . "
>>> print(message)
Мой первый автомобиль Ford.

3.2. Использование элементов списка в выражениях.

Элементы списка могут так же использоваться как переменные в выражениях. Предположим, есть список каких-то чисел и вам нужно проделать с ними арифметические операции.

>>> a = [1, 5, 70, 4, 28]
>>> a[ 0 ] + a[ 2 ]
71
>>> a[ 2 ] / a[ 1 ]
14.0

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

Как правило вы будете создавать динамические списки. Это означает, что во время выполнения программы элементы будут добавляться и удалятся. Изменение элементов в списке Python напоминает синтаксис обращения к элементу списка. Для того чтобы изменить элемент, укажите имя списка и индекс изменяемого элемента в квадратных скобках [ ] , затем задайте новое значение, которое присвоится этому элементу. Например, в нашем списке машин мы хотим поменять бренд 'ford' на 'opel'.

>>> cars = [ 'audi', 'bmw', 'ford', 'kia', 'land rover' ]
>>> cars [ 2 ] = 'opel'
>>> cars
['audi', 'bmw', 'opel', 'kia', 'land rover']

4.2. Добавление элементов в конец списка Python. Метод append() .

Самый простой способ добавление элемента в список - это присоединение его в конец списка. Для этого используется метод append() . Метод append() присоединяет элемент в конец списка, при этом остальные элементы списка не изменяются и не сдвигаются.

>>> cars = [ 'audi', 'bmw', 'ford', 'kia', 'land rover' ]
>>> cars. append ('opel')
>>> print(cars)
['audi', 'bmw', 'ford', 'kia', 'land rover', 'opel']

Если вы хотите начать с пустого списка и добавлять в него элементы, то так же рекомендуется использовать метод append() . Данные, которые захочет сохранить пользователь часто не известны после запуска программы. Создайте для него пустой список, а затем присоединяйте новые данные.

>>> cars = [ ]
>>> cars. append ('audi')
>>> cars. append ('bmw')
>>> cars. append ('kia')
>>> cars. append ('land rover')
>>> print(cars)
['audi', 'bmw', 'kia', 'land rover']

4.3. Вставка элемента в список Python. Метод insert() .

Для вставки элемента в определенную позицию списка существует метод insert( ). Для этого следует указать индекс и значение нового элемента.

>>> cars = [ 'audi', 'bmw', 'ford', 'kia', 'land rover' ]
>>> cars. insert (0, 'opel')
>>> print(cars)
['opel', 'audi', 'bmw', 'ford', 'kia', 'land rover']

В этом примере значение 'opel' вставляется в начало списка, а все остальные значения при этом сдвигаются на одну позицию индекса.

4.4. Удаление элемента в списке командой del() .

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

>>> cars = [ 'audi', 'bmw', 'ford', 'kia', 'land rover' ]
>>> del cars[2]
>>> print(cars)
['audi', 'bmw', 'kia', 'land rover']
>>> del cars[0]
>>> print(cars)
['bmw', 'kia', 'land rover']

При выполнении команды del() элемент удаляется навсегда.

4.5. Удаление элемента списка с использованием метода pop() .

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

>>> cars = [ 'audi', 'bmw', 'ford', 'kia', 'land rover' ]
>>> sale = cars. pop (3)
>>> print(f"Автомобиль марки сегодня был продан.")
Автомобиль марки Kia сегодня был продан.
>>> cars
['audi', 'bmw', 'ford', 'land rover']

После каждого использования метода pop() элемент удаляется из списка.

4.6. Удаление элементов списка по значению. Метод remove()

Когда индекс удаляемого элемента не известен, но вы знаете значение этого элементы, можно воспользоваться методом remove() . Предположим, нам нужно удалить из списка автомобиль ford. Ниже в примере значение ford удаляется из списка.

>>> cars = [ 'audi', 'bmw', 'ford', 'kia', 'land rover' ]
>>> cars. remove ('ford')
>>> cars
['audi', 'bmw', 'kia', 'land rover']

Важно: Метод remove() удаляет только первое вхождение заданного значение в списке. Если в списке значения могут повторяться, то нужно воспользоваться циклом для перебора.

4.7. Очистка списка. Метод clear() .

Чтобы удалить все элементы списка используйте метод clear() .

>>> cars = [ 'ford', 'opel', 'audi', 'land rover', 'bmw' ]
>>> cars. clear ()
>>> print(cars)
[]

5.1. Постоянная сортировка списка методом sort() .

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

>>> cars = [ 'ford', 'opel', 'audi', 'land rover', 'bmw' ]
>>> cars. sort ()
>>> print(cars)
['audi', 'bmw', 'ford', 'land rover', 'opel']
>>> a = [ 560, 25, 452, 14, 945, 643, 1, -42, -5 ]
>>> a. sort ()
>>> print(a)
[-42, -5, 1, 14, 25, 452, 560, 643, 945]

Чтобы отсортировать список по убыванию, в методе sort() используйте не обязательный аргумент reverse.( reverse=True )

>>> cars.sort( reverse=True )
>>> print(cars)
['opel', 'land rover', 'ford', 'bmw', 'audi']

Метод sort() изменяет список и вернутся к исходному порядку не получится.

5.2. Временная сортировка списка функцией sorted() .

Для того чтобы исходный список не менялся, но для удобства работы вы могли получить отсортированный список, существует функция sorted() . Функция sorted() возвращает список в отсортированном порядке.

>>> cars = [ 'ford', 'opel', 'audi', 'land rover', 'bmw' ]
>>> print( sorted (cars))
['audi', 'bmw', 'ford', 'land rover', 'opel']
>>> print(cars)
['ford', 'opel', 'audi', 'land rover', 'bmw']

На примере видно, что исходный список cars остался прежним и не изменился.

6. Определение длины списка. Функция len() .

Для того чтобы быстро определить длину списка используйте функцию len() .

>>> cars = [ 'ford', 'opel', 'audi', 'land rover', 'bmw' ]
>>> print( len (cars))
5

7. Ошибки при работе со списками Python

Одна из основных ошибок при работе со списками, это ошибка индексирования. Например, вы пытаетесь вернуть элемент с индексом 5. В результате Python при работе со списком не находит элемент с этим индексом, происходит ошибка индексирования.

>>> cars = [ 'audi', 'bmw', 'ford', 'kia', 'land rover' ]
>>> cars [5]
Traceback (most recent call last):
File " ", line 1, in
IndexError: list index out of range

Индекс должен быть целым числом или выражением, дающим целочисленный результат. При попытке использования нецелочисленного индекса происходит ошибка TypeError. Так же ошибка индексирования образуется при попытке обратиться к элементу пустого списка.

8. Кортежи в Python.

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

>>> student = ()
>>> len(student)
0
>>> student = 'Ivan', 'Ivanov', 3.5
>>> print(student)
('Ivan', 'Ivanov', 3.5)
>>> print(student[1])
Ivanov

Обращаться к отдельным элементам можно по индексам также как и в списках. Попробуем изменить один элемент кортежа и посмотрим, что произойдет.

>>> student[1] = 'Petrov'
Traceback (most recent call last):
File " ", line 1, in
TypeError: 'tuple' object does not support item assignment

Когда вы захотите изменить элемент в кортеже, Python выдаст ошибку о невозможности изменения элементов. TypeError: 'tuple' object does not support item assignment.

Enum в Python – это набор символьных имен. Количество членов класса Enum обязательно должно быть уникальным и постоянным.

В этом руководстве мы узнаем, как создать перечисление в программе Python, как определить в нем константы, получить доступ к этим константам и типам данных, которые мы можем назначить.

Как создать Enum?

Чтобы создать Enum на языке программирования Python, используйте синтаксис класса.

В следующем примере мы создаем класс Enum с тремя именованными целочисленными константами.

Доступ к значениям класса

Чтобы получить доступ к значениям, вы можете использовать имя class Enum с оператором точки.

В следующем примере мы получим доступ к константе Enum и распечатаем ее значение.

Получение информации

Чтобы получить больше информации о Enum, используйте функцию repr().

Определение константы разных типов данных

Вы можете определять константы любого типа данных. В следующем примере мы определим Enum с константами, принадлежащими к типам данных Integer, String и Float.

В этом руководстве мы узнали, как создать, получить дополнительную информацию и доступ к членам класса Enum в Python.

Список - это непрерывная динамическая коллекция элементов. Каждому элементу списка присваивается порядковый номер - его индекс. Первый индекс равен нулю, второй - единице и так далее. Основные операции для работы со списками - это индексирование, срезы, добавление и удаление элементов, а также проверка на наличие элемента в последовательности.

Создание пустого списка выглядит так:

Создадим список, состоящий из нескольких чисел:

numbers = [ 40 , 20 , 90 , 11 , 5 ]

Настало время строковых переменных:

fruits = [ 'Apple' , 'Grape' , 'Peach' , 'Banan' , 'Orange' ]

Не будем забывать и о дробях:

fractions = [ 3.14 , 2.72 , 1.41 , 1.73 , 17.9 ]

Мы можем создать список, состоящий из различных типов данных:

values = [ 3.14 , 10 , 'Hello world!' , False, 'Python is the best' ]

И такое возможно (⊙_⊙)

list_of_lists = [[ 2 , 4 , 0 ], [ 11 , 2 , 10 ], [ 0 , 19 , 27 ]]

Индексирование

Что же такое индексирование? Это загадочное слово обозначает операцию обращения к элементу по его порядковому номеру ( ( ・ω・)ア напоминаю, что нумерация начинается с нуля). Проиллюстрируем это на примере:

fruits = [ 'Apple' , 'Grape' , 'Peach' , 'Banan' , 'Orange' ]
print (fruits[ 0 ])
print (fruits[ 1 ])
print (fruits[ 4 ])

Списки в Python являются изме­няемым типом данных. Мы можем изменять содер­жимое каждой из ячеек:

fruits = [ 'Apple' , 'Grape' , 'Peach' , 'Banan' , 'Orange' ]
fruits[ 0 ] = 'Watermelon'
fruits[ 3 ] = 'Lemon'
print (fruits)

>>> [ 'Watermelon' , 'Grape' , 'Peach' , 'Lemon' , 'Orange' ]

Индексирование работает и в обратную сторону. Как такое возможно? Всё просто, мы обра­щаемся к элементу списка по отрица­тельному индексу. Индекс с номе­ром -1 дает нам доступ к после­днему элементу, -2 к предпоследнему и так далее.

fruits = [ 'Apple' , 'Grape' , 'Peach' , 'Banan' , 'Orange' ]
print (fruits[ -1 ])
print (fruits[ -2 ])
print (fruits[ -3 ])
print (fruits[ -4 ])

Создание списка с помощью list()

Переходим к способам создания списка. Самый простой из них был приведен выше. Еще раз для закрепления:

А есть еще способы? Да, есть. Один из них — создание списка с помощью функции list() В неё мы можем передать любой итерируемый объект (да-да, тот самый по которому можно запустить цикл (• ᵕ •) )

Рассмотрим несколько примеров:

letters = list ( 'abcdef' )
numbers = list ( range ( 10 ))
even_numbers = list ( range ( 0 , 10 , 2 ))
print (letters)
print (numbers)
print (even_numbers)

>>> [ 'a' , 'b' , 'c' , 'd' , 'e' , 'f'
>>> [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ]
>>> [ 0 , 2 , 4 , 6 , 8 ]

Длина списка

С созданием списка вроде ра­зобрались. Следующий вопрос: как узнать длину списка? Можно, конечно, просто посчитать количество элементов. (⊙_⊙) Но есть способ получше! Функция len() возвращает длину любой итерируемой переменной, переменной, по которой можно запустить цикл. Рассмотрим пример:

fruits = [ 'Apple' , 'Grape' , 'Peach' , 'Banan' , 'Orange' ]
print ( len (fruits))

numbers = [ 40 , 20 , 90 ]
print ( len (numbers))

". любой итерируемой", а это значит:

print ( len ( range ( 10 ))

Срезы

В начале статьи что-то гово­рилось о "срезах". Давайте разберем подробнее, что это такое. Срезом называется неко­торая подпос­ледователь­ность. Принцип действия срезов очень прост: мы "отре­заем" кусок от исходной последова­тель­ности элемента, не меняя её при этом. Я сказал "последо­вательность", а не "спи­сок", потому что срезы работают и с другими итерируемыми типами данных, например, со строками.

fruits = [ 'Apple' , 'Grape' , 'Peach' , 'Banan' , 'Orange' ]
part_of_fruits = fruits[ 0 :3]
print (part_of_fruits)

>>> [ 'Apple' , 'Grape' , 'Peach' ]

Детально рассмотрим синтаксис срезов:

итерируемая_переменная[начальный_индекс:конечный_индекс - 1 :длина_шага]

>>> [ 'Apple' ]
>>> [ 'Apple' , 'Grape' ]
>>> [ 'Apple' , 'Grape' , 'Peach' ]
>>> [ 'Apple' , 'Grape' , 'Peach' , 'Banan' ]
>>> [ 'Apple' , 'Grape' , 'Peach' , 'Banan' , 'Orange' ]
>>> [ 'Apple' , 'Grape' , 'Peach' , 'Banan' , 'Orange' ]
>>> [ 'Apple' , 'Grape' , 'Peach' , 'Banan' , 'Orange' ]

Самое время понять, что делает третий параметр среза - длина шага!

>>> [ 'Apple' , 'Peach' , 'Orange' ]
>>> [ 'Apple' , 'Banan' ]
>>> [ 'Orange' , 'Banan' , 'Peach' , 'Grape' , 'Apple' ]
>>> [ 'Orange' , 'Banan' ]
>>> [ 'Banan' , 'Peach' ]

А теперь вспоминаем всё, что мы знаем о циклах. В Python их целых два! Цикл for и цикл while Нас интересует цикл for, с его помощью мы можем перебирать зна­чения и индексы наших последовательностей. Начнем с перебора значений:

fruits = [ 'Apple' , 'Grape' , 'Peach' , 'Banan' , 'Orange' ]
f or fruit in fruits:
print (fruit, end = ' ' )

>>> Apple Grape Peach Banan Orange

Выглядит несложно, правда? В переменную fruit объявлен­ную в цикле по очереди записываются значения всех элементов списка fruits

А что там с перебором индексов?

f or index in range ( len (fruits)):
print (fruits[index], end = ' ' )

Этот пример гораздо интереснее предыдущего! Что же здесь происходит? Для начала разбе­ремся, что делает функция range(len(fruits))

Мы с вами знаем, что функция len() возвращает длину списка, а range() генерирует диапазон целых чисел от 0 до len()-1.

Сложив 2+2, мы получим, что переменная index принимает значения в диапазоне от 0 до len()-1. Идем дальше, fruits[index] - это обращение по индексу к элементу с индексом index списка fruits. А так как переменная index принимает значения всех индексов списка fruits, то в цикле мы переберем значения всех элементов нашего списка!

Операция in

С помощью in мы можем проверить наличие элемента в списке, строке и любой другой итерируемой переменной.

fruits = [ 'Apple' , 'Grape' , 'Peach' , 'Banan' , 'Orange' ]
if 'Apple' in fruits:
print ( 'В списке есть элемент Apple' )

>>> В списке есть элемент Apple

fruits = [ 'Apple' , 'Grape' , 'Peach' , 'Banan' , 'Orange' ]
if 'Lemon' in fruits:
print ( 'В списке есть элемент Lemon' )
else :'
print ( 'В списке НЕТ элемента Lemon' )

>>> В списке НЕТ элемента Lemon

Приведу более сложный пример:

all_fruits = [ 'Apple' , 'Grape' , 'Peach' , 'Banan' , 'Orange' ]
my_favorite_fruits = [ 'Apple' , 'Banan' , 'Orange' ]
f or item in all_fruits:
if item in my_favorite_fruits:
print (item + ' is my favorite fruit' )
else :
print ( 'I do not like ' + item)

>>> Apple is my favorite fruit
>>> I do not like Grape
>>> I do not like Peach
>>> Banan is my favorite fruit
>>> Orange is my favorite fruit

Методы для работы со списками

Начнем с метода append(), который добавляет элемент в конец списка:

>>> [ 0 , 2 , 4 , 6 , 8 , 200 , 1 , 2 , 3 ]

Мы можем передавать методу append() абсолютно любые значения:

all_types = [ 10 , 3.14 , 'Python' , [ 'I' , 'am' , 'list' ]]
all_types. append ( 1024 )
all_types. append ( 'Hello world!' )
all_types. append ([ 1 , 2 , 3 ])
print (all_types)

>>> [ 10 , 3.14 , 'Python' , [ 'I' , 'am' , 'list' ], 1024 , 'Hello world!' , [ 1 , 2 , 3 ]]

Метод append() отлично выпол­няет свою функцию. Но, что делать, если нам нужно добавить элемент в сере­дину списка? Это умеет метод insert(). Он добавляет элемент в список на произ­вольную позицию. insert() принимает в качестве первого аргу­мента позицию, на которую нужно вставить элемент, а вторым — сам элемент.

Отлично! Добавлять элементы в список мы научи­лись, осталось понять, как их из него удалять. Метод pop() удаляет эле­мент из списка по его индексу:

Теперь мы знаем, как удалять элемент из списка по его инде­ксу. Но что, если мы не знаем индекса элемента, но знаем его значение? Для такого случая у нас есть метод remove(), кото­рый удаляет пер­вый найденный по значению элемент в списке.

А сейчас немного посчитаем, посчитаем эле­менты списка с помощью метода count()

В программировании, как и в жизни, проще работать с упоря­доченными дан­ными, в них легче ори­енти­ро­ваться и что-либо искать. Метод sort() сорти­рует список по воз­раста­нию значений его элементов.

Мы можем изменять порядок сортировки с помощью пара­метра reverse. По умол­чанию этот параметр равен False

Иногда нам нужно перевернуть список, не спраши­вайте меня зачем. Для этого в самом лучшем языке прог­рам­миро­вания на этой планете JavaScr..­Python есть метод reverse():

Допустим, у нас есть два списка и нам нужно их объединить. Програм­мисты на C++ cразу же кинулись писать циклы for, но мы пишем на python, а в python у спис­ков есть полез­ный метод extend(). Этот метод вызы­вается для одного списка, а в качестве аргу­мента ему пере­дается другой список, extend() запи­сывает в конец первого из них начало вто­рого:

fruits = [ 'Banana' , 'Apple' , 'Grape' ]
vegetables = [ 'Tomato' , 'Cucumber' , 'Potato' , 'Carrot' ]
fruits. extend (vegetables)
print (fruits)

>>> [ 'Banana' , 'Apple' , 'Grape' , 'Tomato' , 'Cucumber' , 'Potato' , 'Carrot' ]

В природе существует специ­аль­ный метод для очистки списка — clear()

fruits = [ 'Banana' , 'Apple' , 'Grape' ]
vegetables = [ 'Tomato' , 'Cucumber' , 'Potato' , 'Carrot' ]
fruits. clear ()
vegetables. clear ()
print (fruits)
print (vegetables)

Осталось совсем чуть-чуть всего лишь пара мето­дов, так что делаем последний рывок! Метод index() возв­ращает индекс эле­мента. Рабо­тает это так: вы пере­даете в качестве аргу­мента в index() значение элемента, а метод возв­ращает его индекс:

fruits = [ 'Banana' , 'Apple' , 'Grape' ]
print (fruits. index ( 'Apple' ))
print (fruits. index ( 'Banana' ))
print (fruits. index ( 'Grape' ))

Финишная прямая! Метод copy(), только не падайте, копирует список и возвра­щает его брата-близнеца. Вообще, копи­ро­вание списков - это тема доста­точно инте­ресная, давай­те рас­смотрим её по-подробнее.

Во-первых, если мы просто прис­воим уже сущест­вующий список новой пере­менной, то на первый взгляд всё выглядит неплохо:

fruits = [ 'Banana' , 'Apple' , 'Grape' ]
new_fruits = fruits
print (fruits)
print (new_fruits)

>>> [ 'Banana' , 'Apple' , 'Grape' ]
>>> [ 'Banana' , 'Apple' , 'Grape' ]

Но есть одно маленькое "НО":

fruits = [ 'Banana' , 'Apple' , 'Grape' ]
new_fruits = fruits
fruits. pop ()
print (fruits)
print (new_fruits)

При прямом присваивании спис­ков копи­рования не проис­ходит. Обе пере­менные начи­нают ссылаться на один и тот же список! То есть если мы изме­ним один из них, то изме­нится и другой. Что же тогда делать? Пользоваться методом copy(), конечно:

fruits = [ 'Banana' , 'Apple' , 'Grape' ]
new_fruits = fruits. copy ()
fruits. pop ()
print (fruits)
print (new_fruits)

>>> [ 'Banana' , 'Apple' ]
>>> [ 'Banana' , 'Apple' , 'Grape' ]

Отлично! Но что если у нас список в списке? Скопируется ли внутренний список с помощью метода copy() — нет:

Решение задач

1. Создайте список из 10 четных чисел и выведите его с помощью цикла for

2. Создайте список из 5 элементов. Сделайте срез от второго индекса до четвертого

3. Создайте пустой список и добавьте в него 10 случайных чисел и выведите их. В данной задаче нужно использовать функцию randint.

4. Удалите все элементы из списка, созданного в задании 3

5. Создайте список из введенной пользователем строки и удалите из него символы 'a', 'e', 'o'

6. Даны два списка, удалите все элементы первого списка из второго

7. Создайте список из случайных чисел и найдите наибольший элемент в нем.

8. Найдите наименьший элемент в списке из задания 7

9. Найдите сумму элементов списка из задания 7

10. Найдите среднее арифметическое элементов списка из задания 7

Сложные задачи

1. Создайте список из случайных чисел. Найдите номер его последнего локального максимума (локальный максимум — это элемент, который больше любого из своих соседей).

2. Создайте список из случайных чисел. Найдите максимальное количество его одинаковых элементов.

3. Создайте список из случайных чисел. Найдите второй максимум.

4. Создайте список из случайных чисел. Найдите количество различных элементов в нем.

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