Как с помощью match case проверить тип данных и присвоить в переменные?
Как реализовать этот код с помощью match, case
a = [1, 2, 3]
if isinstance(a, list) and len(a) == 3:
a1 = a[0]
a2 = a[1]
a3 = a[2]
Такой способ слишком громоздкий
match a:
case list(a):
a1 = a[0]
a2 = a[1]
a3 = a[2]
Такой просто проверяет, что это у нас коллекция
match a:
case a1, a2, a3:
print(a1, a2, a3)
Ответы (2 шт):
Автор решения: GrAnd
→ Ссылка
match a:
case [a1, a2, a3] if isinstance(a, list):
print(a1, a2, a3)
Но это не сильно элегантнее чем
if isinstance(a, list) and len(a) == 3:
a1, a2, a3 = a
print(a1, a2, a3)
Автор решения: insolor
→ Ссылка
Работает такой вариант:
a = [1, 2, 3]
match a:
case list([a1, a2, a3]):
print("List", a1, a2, a3)
case _:
print("Not matched")
- выведет List 1 2 3
Со значениями других типов, например:
a = (1, 2, 3)
match a:
case list([a1, a2, a3]):
print("List", a1, a2, a3)
case _:
print("Not matched")
- выведет Not matched
Со списком длиной не равной 3 (например, a = [1, 2, 3, 4]) также выведет Not matched.