Python:Рецепты/Распаковка последовательности произвольной длины: различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Myagkij (обсуждение | вклад) (→№1) |
Myagkij (обсуждение | вклад) (→№2) |
||
Строка 38: | Строка 38: | ||
===№2=== | ===№2=== | ||
Допустим у вас есть записи о пользователях(имя, почта и произвольное количество номеров телефонов), в данном случае распаковка будет выглядеть следующим образом: | |||
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div"> | <syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div"> | ||
record = ['John', 'John@example.com', '777-888-999', '666-777-888', '123-456-789'] | |||
name, email, *phones = record | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 46: | Строка 49: | ||
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div"> | <syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div"> | ||
>>> name | |||
'John' | |||
>>> email | |||
'John@example.com' | |||
>>> phones | |||
['777-888-999', '666-777-888', '123-456-789'] | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Версия от 20:57, 15 апреля 2020
Проверка/Оформление/Редактирование: Мякишев Е.А.
Распаковка последовательности произвольной длины
Задача
Необходимо распаковать N-элементов из итерируемого объекта, который может содержать больше N-элементов и избежать генерирования исключения "too many values to unpack"(слишком много значений для распаковки)
Решение
Для решения данной задачи используется "выражение со звездочкой"(*).
Пример
№1
Допустим у вас есть 15 значений, первое и последнее из которых необходимо проигнорировать, а по остальным посчитать среднее значение.
numbers = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
first, *middle, last = numbers
avg = sum(middle)/len(middle)
Результат:
>>> avg
8.0
>>> first
1
>>> last
15
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
№2
Допустим у вас есть записи о пользователях(имя, почта и произвольное количество номеров телефонов), в данном случае распаковка будет выглядеть следующим образом:
record = ['John', 'John@example.com', '777-888-999', '666-777-888', '123-456-789']
name, email, *phones = record
Результат:
>>> name
'John'
>>> email
'John@example.com'
>>> phones
['777-888-999', '666-777-888', '123-456-789']
№3
Результат:
№4
Результат:
Результат:
№5
Результат:
№6
Результат:
См.также
Внешние ссылки
Категории:
- Страницы с устаревшим атрибутом подсветки синтаксиса «enclose»
- Справочник языка Python
- Python
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- SEO
- Рецепты
- Рецепты Python
- Последовательности в Python
- Работа с последовательностями в Python
- Распаковка в Python
- Работа со структурами данных в Python
- Структуры данных Python
- Последовательности
- Работа с последовательностями
- Распаковка
- Работа со структурами данных
- Структуры данных