Как проверить, содержит ли список элемент, используя регистр совпадений?
Я пытаюсь проверить, находится ли один элемент в списке, используя регистр соответствия. Я не очень хорошо знаком с этими новыми ключевыми словами, поэтому на 90% уверен, что использую их неправильно. Независимо от того, есть ли способ сделать это?
Это мой код. Я ожидаю, что это напечатает «привет обнаружен в списке. Привет!» и "привет обнаружен в списке. Привет!", но оператор match, похоже, не работает таким образом.
mylist= ["hello", "hi", 123, True]
match mylist:
case ['hi']:
print("hi detected in list. Hi!")
case ['hello']:
print("hello detected in list. Hello!")
Есть ли способ проверить, содержит ли список элемент с использованием регистра?
2 ответа
Списки могут содержать произвольное количество элементов. Невозможно индивидуально сопоставить все элементы списка в кейсе.
Вы можете сопоставить все элементы, а затем поставить охрану на корпус.
match mylist:
case [*all_elements] if 'hi' in all_elements:
...
Это не кажется намного лучше, чем:
if 'hi' in mylist:
...
Но допустим, вы хотите определить, есть ли в списке'hi'
как первый элемент и включает его снова?
match mylist:
case ['hi', *other_elements] if 'hi' in other_elements:
...
Использование match/case — не самый подходящий способ определить, содержит ли список какое-то конкретное значение. Однако, чтобы ответить на вопрос тогда:
mylist= ["hello", "hi", 123, True]
for element in mylist:
match element:
case 'hello':
print('hello detected')
case 'hi':
print('hi detected')