Как проверить, содержит ли список элемент, используя регистр совпадений?

Я пытаюсь проверить, находится ли один элемент в списке, используя регистр соответствия. Я не очень хорошо знаком с этими новыми ключевыми словами, поэтому на 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')
Другие вопросы по тегам