
Python включает ряд последовательных типов данных, которые позволяют хранить коллекции данных организованно и эффективно. К основным типам последовательностей относятся списки, кортежи и объекты-диапазоны.
В этой статье мы рассмотрим списки в Python. Мы покажем вам, как создавать списки, разбивать их на фрагменты и сортировать, добавлять и удалять элементы из списков и так далее.
Списки — это изменяемые последовательности, то есть их можно изменять после создания. Списки — один из наиболее часто используемых типов данных в Python и обычно применяются для хранения коллекций элементов одного типа.
Создание списка
Списки обычно создаются путём помещения элементов в квадратные скобки [] и разделения их запятыми. Они могут содержать любое количество элементов разных типов. Вот пример:
L = [ 'orange' , 'white' , 'green' ]
Квадратные скобки без элементов между ними обозначают пустой список:
L = []
Хотя списки Python, как правило, однородны, в них могут быть элементы со смешанными типами данных:
L = [ 1 , 'white' , 6.5 ]
Вы также можете объявлять вложенные списки, в которых один или несколько элементов также являются списками:
L = [ 1 , 2 , [ 'red' , 'blue' ]]
Несколько элементов могут иметь одинаковое значение:
L = [ 1 , 2 , 3 , 2 , 2 , 1 ]
Списки также можно создавать с использованием генератора списков, конструктора list() и других встроенных функций, таких как sorted() .
Доступ к элементам списка
На элемент списка можно ссылаться по его индексу. Индексы представляют собой целые числа от 0 до n-1 где n — количество элементов:
L = ["a", "b", "c", "d"] 0 1 2 3
В Python индексы заключаются в квадратные скобки:
L [ index ]
Например, чтобы получить доступ ко второму элементу списка, можно использовать:
colors = ['orange', 'white', 'green']colors[1]
'white'
Если вы ссылаетесь на несуществующий индекс, возникает исключение IndexError :
Traceback (most recent call last): File "", line 1, in IndexError: list index out of range
Для доступа к элементам вложенного списка используйте несколько индексов:
L = [1, 2, ["red", "blue"]]L[2][1]
'blue'
Python также позволяет обращаться к элементам списка, используя отрицательные индексы. Последний элемент обозначается как -1 , предпоследний — как -2 и так далее:
L = ["a", "b", "c", "d"] -4 -3 -2 -1
Например, чтобы получить доступ ко второму элементу с конца, можно использовать:
colors = ['orange', 'white', 'green']colors[-2]
'white'
Нарезка списка
В Python вы можете разрезать список, используя следующую форму:
L[start:stop:step]
- Первый аргумент указывает индекс, с которого начинается извлечение. Отрицательный индекс указывает смещение от конца списка. Если этот аргумент опущен, срез начинается с индекса 0.
- Второй аргумент указывает индекс, до которого следует завершить извлечение; результат не включает элемент «stop». Отрицательный индекс указывает смещение от конца списка. Если этот аргумент опущен или превышает длину списка, срез выполняется до конца списка.
- Третий аргумент необязателен и задаёт шаг среза. Если аргумент «шаг» не указан, он по умолчанию равен 1. При использовании отрицательного значения элементы среза выбираются в обратном порядке.
Результатом нарезки списка является новый список, содержащий извлеченные элементы, а исходный список не изменяется.
Все нижеперечисленное является допустимым синтаксисом Python:
L[:] # copy whole list L[start:] # slice the list starting from the element with index "start" to the end of the list. L[:stop] # slice the list starting from the begging up to but not including the element with index "stop". L[start:stop] # slice the list starting from the element with index "start" up to but not including the element with index "stop". stop" L[::step] # slice the list with a stride of "step"
Ниже приведен простой пример того, как разрезать список, начиная с элемента с индексом 1 и до элемента с индексом 4, не включая его:
fruits = ['Apple', 'Peach', 'Lemon', 'Strawberry', 'Grape']fruits[1:4]
['Peach', 'Lemon', 'Strawberry']
Обновление значения элемента
Чтобы изменить значение определенного элемента в списке, обратитесь к его порядковому номеру:
L[index] = value
Вот пример, показывающий, как обновить значение последнего элемента списка:
colors = ['orange', 'white', 'green']colors[-1] = "blue"print(colors)
['orange', 'white', 'blue']
Если элемент с указанным индексом существует, значение обновляется. В противном случае возникает исключение IndexError :
Traceback (most recent call last): File "", line 1, in IndexError: list assignment index out of range
Вы также можете обновить часть списка новыми значениями:
colors = ['orange', 'white', 'green']colors[1:3] = ['red']print(colors)
['orange', 'red']
Заменяющий фрагмент может содержать меньше, больше или столько же элементов, сколько и список. Это позволяет расширять или сжимать список.
Добавление элементов в список
Тип данных list имеет два метода, которые позволяют добавлять элементы в список : append() и insert() .
Метод append() добавляет элемент в конец списка. Синтаксис метода append() следующий:
L.append(element)
«Элемент» — это элемент, добавляемый в список. Это может быть любой тип данных, включая список. Вот пример:
colors = ['orange', 'white', 'green']colors.append('red')print(colors)
['orange', 'white', 'green', 'red']
Метод insert() добавляет элемент в определенную позицию списка и имеет следующий синтаксис:
L.insert(index, element)
«index» — это позиция, куда нужно вставить элемент, а «element» — это элемент, который нужно добавить в список. В следующем примере показано, как добавить элемент в список на первую позицию:
colors = ['orange', 'white', 'green']colors.insert(0, 'red')print(colors)
['red', 'orange', 'white', 'green']
Метод extend() позволяет расширить список несколькими элементами. Он принимает один аргумент и имеет следующий синтаксис:
L.extend(list)
Элементы списка добавляются в конец строки «L». Вот пример:
colors = ['orange', 'white', 'green']colors.extend(['blue', 'black'])print(colors)
['orange', 'white', 'green', 'blue', 'black']
Удаление элементов из списка
Метод remove() принимает один аргумент и удаляет из списка первый элемент со значением, соответствующим аргументу:
L.remove(element)
colors = ['orange', 'white', 'orange', 'green']colors.remove('orange')print(colors)
['white', 'orange', 'green']
Если элемент с заданным значением не существует, возникает исключение ValueError :
Traceback (most recent call last): File "", line 1, in ValueError: list.remove(x): x not in list
Метод pop() принимает один аргумент и удаляет из списка элемент с индексом, соответствующим аргументу:
L.pop(element)
Аргумент необязателен и по умолчанию равен «-1», что соответствует последнему элементу списка. Возвращаемое значение метода — удалённый элемент. Вот пример:
colors = ['orange', 'white', 'green']colors.pop(1)print(colors)
'white' ['orange', 'green']
Ключевое слово del в сочетании с обозначением среза позволяет удалить более одного элемента. Например, чтобы удалить первые два элемента из списка, используйте следующее:
colors = ['orange', 'white', 'orange', 'green']del colors[0:2]print(colors)
['orange', 'green']
Чтобы удалить все элементы, используйте метод clear() , который очищает список и не принимает никаких аргументов:
colors = ['orange', 'white', 'green']colors.clear()print(colors)
[]
Найти длину списка
Встроенная функция len() возвращает общее количество элементов объекта.
Чтобы найти длину списка, передайте ее в качестве аргумента функции len() :
len(L)
Вот пример:
colors = ['orange', 'white', 'green']num = len(colors)print(num)
3
Итерация по списку
Для перебора всех элементов списка используйте цикл for :
colors = ['orange', 'white', 'green']for color in colors:print(color)
orange white green
Если вам нужны индексы, в вашем распоряжении несколько способов. Наиболее распространённые — это комбинация функций range() и len() или использование встроенной функции enumerate() .
В примере ниже показано, как получить индекс и значение каждого элемента в списке:
colors = ['orange', 'white', 'green']for i in range(len(colors)):print("Index {} : Value {}".format(i, colors[i]))
Index 0 : Value orange Index 1 : Value white Index 2 : Value green
Вместо использования шаблона range(len(...)) вы можете использовать функцию enumerate() для циклического перебора списка более привычным для Python способом:
colors = ['orange', 'white', 'green']for index, value in enumerate(colors):print("Index {} : Value {}".format(index, value))
Index 0 : Value orange Index 1 : Value white Index 2 : Value green
Проверить, существует ли элемент
Чтобы проверить, существует ли элемент в списке, можно использовать операторы in и not in :
colors = ['orange', 'white', 'green']print('orange' in colors)
Вывод будет True или False :
True
Вот еще один пример использования оператора if :
colors = ['orange', 'white', 'green']if 'blue' not in colors:print('no')else:print('yes')
Вывод будет либо yes , либо no :
no
Методы списка Python
Объекты списка принимают следующие методы:
-
append(x)— добавляет элемент в конец списка. -
clear()— удаляет все элементы из списка. -
copy()— возвращает поверхностную копию списка. -
count(x)— возвращает количество появлений «x» в списке. -
extend(iterable)— добавляет «iterable» в конец списка. -
index(x)— возвращает позицию первого вхождения элемента со значением «x». -
insert(i, x)— добавляет элемент в заданную позицию. -
pop(i)— удаляет элемент из заданной позиции. -
remove()— удаляет элемент с заданным значением. -
reverse()— меняет местами элементы списка . -
sort()— сортирует элементы списка.
Заключение
В этой статье мы обсудили, как создавать списки и работать с ними в Python. Тип данных list включает в себя ряд полезных методов.
Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.
Связанные руководства