Есть ли способ использовать два условия if в списках в python

Предположим, что у меня был список

my_list = ['91 9925479326','18002561245','All the best','good']

Теперь я хочу игнорировать строки в списке, начиная с 91 и 18, как показано ниже

result = []
for i in my_list:
   if not '91' in i:
      if not '18' in i:
         result.append(i) 

Итак, здесь я хочу добиться этого с помощью списков. И все-таки, чтобы написать два условия, если условия в списках завершены?

Может кто-нибудь, пожалуйста, дайте мне знать, как это сделать со списком понятий

Спасибо заранее............

Ответ 1

[i for i in my_list if '91' not in i and '18' not in i]

Обратите внимание, что вы не должны использовать list в качестве имени переменной, он затеняет встроенную функцию.

Ответ 2

Если у вас более двух значений (91 и 18) или они динамически производятся лучше использовать эту конструкцию:

[i for i in my_list if not i.startswith(('91', '18'))]

Или если вы хотите проверить, находятся ли 91 и 18 в строках (не только в начале), используйте in вместо startswith:

[i for i in my_list if all(x not in i for x in ['91', '18'])]

Пример использования:

>>> my_list = ['91 9925479326','18002561245','All the best','good']
>>> [i for i in my_list if all(not i.startswith(x) for x in ['91', '18'])]
['All the best', 'good']
>>> 

Ответ 3

Вы можете "объединить" оба условия:

if ((not '91' in i) and (not '18' in i))