Python:Рецепты/Распаковка последовательности в отдельные переменные: различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Myagkij (обсуждение | вклад) Нет описания правки |
Myagkij (обсуждение | вклад) (→Пример) |
||
Строка 80: | Строка 80: | ||
>>> p2 | >>> p2 | ||
['WIKIHANDBK', 10, 100.9, (15, 4, 2020)] | ['WIKIHANDBK', 10, 100.9, (15, 4, 2020)] | ||
</syntaxhighlight> | |||
===№4=== | |||
При не совпадении количества элементов будет сгенерировано исключение: | |||
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div"> | |||
p1 = (1,2,3) | |||
a, b = p1 | |||
</syntaxhighlight> | |||
Результат: | |||
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div"> | |||
>>> 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) | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div"> | |||
p1 = (1,2,3) | |||
a,b,c,d = p1 | |||
</syntaxhighlight> | |||
Результат: | |||
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div"> | |||
>>> 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) | |||
>>> | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Версия от 19:02, 15 апреля 2020
Проверка/Оформление/Редактирование: Мякишев Е.А.
Распаковка последовательности в отдельные переменные
Задача
Дана последовательность из 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)
>>>