n, s = 10, 'hello'
# то же самое, что
n = 10
s = 'hello'
В примере выше мы создали кортеж, стоящий справа от =, прямо на этой же строчке. Но можно заготовить его и заранее:
cards = [('7', 'spades'), ('Д', 'clubs'), ('Т', 'spades')]
value, suit = cards[0]
print('Достоинство карты:', value) # 7, присваивается по очерёдно первый индекс
print('Масть карты:', suit) # spades, а затем второйИтак, на данный момент мы знаем уже четыре вида коллекций: строки, списки, множества и кортежи. У вас может возникнуть вопрос: можно ли из одной коллекции сделать другую?
Зачем нужно преобразование коллекций?
Преобразование строки в список позволяет получить список символов. В некоторых задачах это может быть полезно: например, если мы хотим изменить один символ строки:
s = 'beaytiful' # Написали с ошибкой
a = list(s) # a == ['b', 'e', 'a', 'y', 't', 'i', 'f,' 'u', 'l']
a[3] = 'u' # a == ['b', 'e', 'a', 'u', 't', 'i', 'f,' 'u', 'l']
Преобразование списка или строки во множество позволяет получить очень интересные результаты. Как вы помните, все элементы множества должны быть уникальны, поэтому при преобразовании списка во множество каждый элемент останется только в одном экземпляре. Таким образом, можно очень легко убрать повторяющиеся элементы и узнать, сколько элементов встречается в списке хотя бы один раз:
a = [1, 2, 1, 1, 2, 2, 3, 3]
print('Количество элементов в списке без повторений: ', len(set(a))) # 3
Документация о типах методов и их использовании:
https://docs.python.org/3/library/stdtypes.html
Python documentation
Built-in Types
The following sections describe the standard types that are built into the interpreter. The principal built-in types are numerics, sequences, mappings, classes, instances and exceptions. Some colle...
способ создания вложенного списка на одной строке:
table = [[int(el) for el in input().split()] for _ in range(n)] # [int(el) for el in input().split()] создаётся 1 отдельный вложенный список тем что запрашивается строчный ввод который превращается в целые числа разделённые запятой, который попадает в конец основного списка и далее создаются остальные с помощью for _ in range(n)
table = [[int(el) for el in input().split()] for _ in range(n)] # [int(el) for el in input().split()] создаётся 1 отдельный вложенный список тем что запрашивается строчный ввод который превращается в целые числа разделённые запятой, который попадает в конец основного списка и далее создаются остальные с помощью for _ in range(n)
first_name = 'Сильвестр'
last_name = 'Сталлоне'
print(actors[first_name + ' ' + last_name])
Если ключа в словаре нет, возникнет ошибка:
print(actors['Несуществующий ключ'])
KeyError: 'Несуществующий ключ'
6. Нестроковые ключи
Решим следующую задачу. Пусть дан длинный список целых чисел numbers. Мы знаем, что некоторые числа встречаются в этом списке несколько раз. Нужно узнать, сколько именно раз встречается каждое из чисел.
Просто так сделать counts[number] += 1 нельзя: если ключа number в словаре нет, возникнет ошибка KeyError.
В результате работы этой программы все элементы из списка numbers окажутся ключами словаря counts. Значением counts[x] будет количество раз, которое число x встретилось в списке numbers. Как это работает?
Цикл for перебирает все элементы списка numbers и для каждого проверяет, присутствует ли он уже в качестве ключа в counts. Если нет — значит, число встретилось нам впервые и мы инициализируем значение counts[numbers] = 1. Иначе увеличим counts[number] на единицу, поскольку число number встретилось нам повторно.
Почему для этой задачи не стоит использовать список, хотя ключи — обычные целые числа? Потому что, используя словарь, мы можем решить эту задачу и для вещественных чисел, и для очень больших целых чисел, и вообще для любых объектов, которые можно сравнивать.
Решим следующую задачу. Пусть дан длинный список целых чисел numbers. Мы знаем, что некоторые числа встречаются в этом списке несколько раз. Нужно узнать, сколько именно раз встречается каждое из чисел.
numbers = [1, 10, 1, 6, 4, 10, 4, 2, 2, 1, 10, 1]
counts = {}
for number in numbers:
if number not in counts:
counts[number] = 1
else:
counts[number] += 1
Просто так сделать counts[number] += 1 нельзя: если ключа number в словаре нет, возникнет ошибка KeyError.
В результате работы этой программы все элементы из списка numbers окажутся ключами словаря counts. Значением counts[x] будет количество раз, которое число x встретилось в списке numbers. Как это работает?
Цикл for перебирает все элементы списка numbers и для каждого проверяет, присутствует ли он уже в качестве ключа в counts. Если нет — значит, число встретилось нам впервые и мы инициализируем значение counts[numbers] = 1. Иначе увеличим counts[number] на единицу, поскольку число number встретилось нам повторно.
Почему для этой задачи не стоит использовать список, хотя ключи — обычные целые числа? Потому что, используя словарь, мы можем решить эту задачу и для вещественных чисел, и для очень больших целых чисел, и вообще для любых объектов, которые можно сравнивать.