Python:Рецепты/Распаковка последовательности в отдельные переменные: различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Myagkij (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
Строка 16: | Строка 16: | ||
===№1=== | ===№1=== | ||
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
p1 = (1,2,3) | p1 = (1,2,3) | ||
a, b, c = p1 | a, b, c = p1 | ||
Строка 23: | Строка 23: | ||
Результат: | Результат: | ||
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
>>> a | >>> a | ||
1 | 1 | ||
Строка 36: | Строка 36: | ||
===№2=== | ===№2=== | ||
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
p2 = ['WIKIHANDBK', 10, 100.9, (15, 4, 2020)] | p2 = ['WIKIHANDBK', 10, 100.9, (15, 4, 2020)] | ||
site, inum, fnum, date = p2 | site, inum, fnum, date = p2 | ||
Строка 43: | Строка 43: | ||
Результат: | Результат: | ||
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
>>> site | >>> site | ||
'WIKIHANDBK' | 'WIKIHANDBK' | ||
Строка 58: | Строка 58: | ||
===№3=== | ===№3=== | ||
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
p2 = ['WIKIHANDBK', 10, 100.9, (15, 4, 2020)] | p2 = ['WIKIHANDBK', 10, 100.9, (15, 4, 2020)] | ||
site, inum, fnum, (day, month, year) = p2 | site, inum, fnum, (day, month, year) = p2 | ||
Строка 65: | Строка 65: | ||
Результат: | Результат: | ||
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
>>> site | >>> site | ||
'WIKIHANDBK' | 'WIKIHANDBK' | ||
Строка 86: | Строка 86: | ||
При не совпадении количества элементов будет сгенерировано исключение: | При не совпадении количества элементов будет сгенерировано исключение: | ||
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
p1 = (1,2,3) | p1 = (1,2,3) | ||
a, b = p1 | a, b = p1 | ||
Строка 93: | Строка 93: | ||
Результат: | Результат: | ||
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
>>> a,b = p1 | >>> a,b = p1 | ||
Traceback (most recent call last): | Traceback (most recent call last): | ||
Строка 101: | Строка 101: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
p1 = (1,2,3) | p1 = (1,2,3) | ||
a,b,c,d = p1 | a,b,c,d = p1 | ||
Строка 108: | Строка 108: | ||
Результат: | Результат: | ||
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
>>> a,b,c,d = p1 | >>> a,b,c,d = p1 | ||
Traceback (most recent call last): | Traceback (most recent call last): | ||
Строка 121: | Строка 121: | ||
Распаковка работает с любым итерируемым объектом: | Распаковка работает с любым итерируемым объектом: | ||
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
s = 'hello' | s = 'hello' | ||
a,b,c,d,e = s | a,b,c,d,e = s | ||
Строка 128: | Строка 128: | ||
Результат: | Результат: | ||
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
>>> a | >>> a | ||
'h' | 'h' | ||
Строка 145: | Строка 145: | ||
При распаковке, иногда необходимо отбросить некоторые значения. Для этого нет специального синтаксиса, но можно просто использовать переменные, которые вы потом отбросите: | При распаковке, иногда необходимо отбросить некоторые значения. Для этого нет специального синтаксиса, но можно просто использовать переменные, которые вы потом отбросите: | ||
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
p2 = ['WIKIHANDBK', 10, 100.9, (15, 4, 2020)] | p2 = ['WIKIHANDBK', 10, 100.9, (15, 4, 2020)] | ||
_, _, _, date = p2 | _, _, _, date = p2 | ||
Строка 152: | Строка 152: | ||
Результат: | Результат: | ||
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
>>> date | >>> date | ||
(15, 4, 2020) | (15, 4, 2020) |
Текущая версия от 20:06, 23 мая 2023
Проверка/Оформление/Редактирование: Мякишев Е.А.
Распаковка последовательности в отдельные переменные
Задача
Дана последовательность из N-элементов, которую необходимо распаковать в N-переменных.
Решение
Данная задача решается обычным присваиванием, но необходимо соблюсти условие - количество и структура переменных должна совпадать с таковой в последовательности.
Пример
№1
p1 = (1,2,3)
a, b, c = p1
Результат:
>>> a
1
>>> b
2
>>> c
3
>>> p1
(1, 2, 3)
№2
p2 = ['WIKIHANDBK', 10, 100.9, (15, 4, 2020)]
site, inum, fnum, date = p2
Результат:
>>> site
'WIKIHANDBK'
>>> inum
10
>>> fnum
100.9
>>> date
(15, 4, 2020)
>>> p2
['WIKIHANDBK', 10, 100.9, (15, 4, 2020)]
№3
p2 = ['WIKIHANDBK', 10, 100.9, (15, 4, 2020)]
site, inum, fnum, (day, month, year) = p2
Результат:
>>> site
'WIKIHANDBK'
>>> inum
10
>>> fnum
100.9
>>> day
15
>>> month
4
>>> year
2020
>>> p2
['WIKIHANDBK', 10, 100.9, (15, 4, 2020)]
№4
При не совпадении количества элементов будет сгенерировано исключение:
p1 = (1,2,3)
a, b = p1
Результат:
>>> a,b = p1
Traceback (most recent call last):
File "<pyshell#31>", line 1, in <module>
a,b = p1
ValueError: too many values to unpack (expected 2)
p1 = (1,2,3)
a,b,c,d = p1
Результат:
>>> a,b,c,d = p1
Traceback (most recent call last):
File "<pyshell#32>", line 1, in <module>
a,b,c,d = p1
ValueError: not enough values to unpack (expected 4, got 3)
>>>
№5
Распаковка работает с любым итерируемым объектом:
s = 'hello'
a,b,c,d,e = s
Результат:
>>> a
'h'
>>> b
'e'
>>> c
'l'
>>> d
'l'
>>> e
'o'
№6
При распаковке, иногда необходимо отбросить некоторые значения. Для этого нет специального синтаксиса, но можно просто использовать переменные, которые вы потом отбросите:
p2 = ['WIKIHANDBK', 10, 100.9, (15, 4, 2020)]
_, _, _, date = p2
Результат:
>>> date
(15, 4, 2020)
См.также
Внешние ссылки
Категории:
- Справочник языка Python
- Python
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Рецепты
- Рецепты Python
- Последовательности в Python
- Работа с последовательностями в Python
- Распаковка в Python
- Работа со структурами данных в Python
- Структуры данных Python
- Последовательности
- Работа с последовательностями
- Распаковка
- Работа со структурами данных
- Структуры данных