Последовательности

Sequnce (последовательность)

Как понятно из названия, последовательность - это последовательность каких-то значений. Если мы говорим про строки, то это последовательность символов в какой-то кодировке. А если говорим, про кортеж - это последовательность произвольных значений. Существуют изменяемые(mutable) последовательности и неизменяемые(immutable).

Методы мутабельных последовательностей

  • .append() - Добавить объект в список
  • .insert(i, x) - Добавить значение x по индексу i
  • .extend(i, x) - Расширить последовательность другой последовательностью
  • .pop(index) - Вытащить объект из списка (по умолчанию с конца). Значит что значение будет удалено из списка и возвращено как результат вызова метода.
  • .remove(el) - Удалить значение из списка.
  • .clear() - Удалить все значения из списка
  • .reverse() - Инплейс переворот

Списки(list)

Список в python - это отсортированная изменяемая коллекция. Объявляется через литерал объявления list - [].

Объявление списка

l1 = [1,2,3]
empty_list = []
foo = [1, "hello", 3.14, True]
bar = list(1, "hello", 3.14, True)

List (Список) Это коллекция/последовательность, которая позволяет хранить множество объектов.

Объявление списка foo = [1, "hello", 3.14, True] bar = list(1, "hello", 3.14, True)

Списки являються последовательностью и их методы похожи

  • list.append() - Добавить объект в список
  • list.insert(i, x) - Добавить значение x по индексу i
  • list.extend(i, x) - Расширить последовательность другой последовательностью
  • list.pop(index) - Вытащить объект из списка (по умолчанию с конца). Значит что значение будет удалено из списка и возвращено как результат вызова метода.
  • list.remove(el) - Удалить значение из списка.
  • list.clear() - Удалить все значения из списка

Оператор []

Используется для получения значения по индексу или изменения значения по индексу. Для получения значения по индексу 1 из последовательности foo следует написать следующий код:

foo[1]

Примеры получения по индексу

some_list = [ "H", "e", "l", "l", "o" ]
some_list[1] # e
some_list[4] # o

Примеры изменения по индексу:

some_list = [ "H", "e", "l", "l", "o" ]
some_list[4] = "0"
print(some_list) # ["H", "e", "l", "l", "0"]

Удаление по индексу (Оператор del)¶

some_list = [ "H", "e", "l", "l", "o" ]
del some_list[0]
print(some_list) # ["e", "l", "l", "o"]
# 0, 1, 2, 3
foo = [1, 2, 3, 4]
# Положить значение
foo.append(5) # Текущее значение [1, 2, 3, 4, 5]
# Удалить значение из списка по индексу
del foo[3] # Текущее значение [1, 2, 3, 5]
# Удалить значение из списка по значению
foo.remove(5) # Текущее значение [1, 2, 3]
# Получить значение из списка
print("foo[0]:", foo[0])
# Изменить значение в списке
foo[0] = 10 #Текущее значение [10, 2, 3]
print("foo:", foo)

Кортежи(tuple)

Кортеж в python - это отсортированная неизменяемая коллекция. Объявляется через литерал объявления tuple - ().

Скобочки можно опускать

t1 = (1,2,3)
t2 = 1, 2, 3

С таким синтаксисом, вам будет проще вернуть несколько значений из функции

def foo():
return 1, 2
x, y = foo()
print(x, y)

Попытка изменения кортежа не увенчается успехом, потому как уже сказанно - кортежи неизменяемы

Множеста set

Множество в python - это неотсортированная изменяемая коллекция. Объявляется через литерал объявления set - {}.

Но важный момент! Думаю, что вы заметите, что литералы словарей и множеств похожи, поэтому в следующем коде мы создадим пустой dict: Представьте, что это список, но отличается он следующим:

  • Он не может хранить дубли объектов
  • Эта коллекция является неотсортированной
  • Класс set предоставляет методы для операций над множествами, такие как: intersection/union/difference/symmetric difference Для объявления множеста используется литерал множеста({}).
empty_dict = {} # пустой словарь, не set!

Для инициализации пустого сета, нам понадобится вызвать метод: set()

empty_set = set() # пустой словарь, не set!

Методы множеств

  • set.intersection(other) - Пересечение множеств
  • set.union(other) - Oбъединение нескольких множеств
  • set.difference(other) - Множество из всех элементов set, не принадлежащие ни одному из other
  • set.symmetric_difference(other) - Множество из элементов, встречающихся в одном множестве, но не встречающиеся в обоих
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
print("intersection:", set1.intersection(set2)) #intersection: {4, 5}
print("intersection(&):", set1 & set2) #intersection(&): {4, 5}
print("union:", set1.union(set2)) #union: {1, 2, 3, 4, 5, 6, 7, 8}
print("union(|):", set1 | set2) #union(|): {1, 2, 3, 4, 5, 6, 7, 8}
print("difference", set1.difference(set2)) #difference {1, 2, 3}
print("difference(-)", set1 - set2) #difference(-) {1, 2, 3}
print("symmetric difference", (set1 | set2) - (set1 & set2)) #symmetric difference {1, 2, 3, 6, 7, 8}
print("symmetric difference", set1.symmetric_difference(set2)) #symmetric difference {1, 2, 3, 6, 7, 8}
print("symmetric difference(^)", set1 ^ set2) #symmetric difference(^) {1, 2, 3, 6, 7, 8}

Пример удаления дубликатов из списка

list_1 = [
"Двадцать тысяч льё под водой",
"Двадцать тысяч льё под водой",
"Судьба Жана Морена",
"Чёрная Индия",
"Южная звезда",
"Южная звезда",
"Пятьсот миллионов бегумы"
]
f_list = list(set(list_1))
print(f_list)
#['Чёрная Индия', 'Пятьсот миллионов бегумы', 'Двадцать тысяч льё под водой', 'Судьба Жана Морена', 'Южная звезда']