Немогу понять почему не работает if not in
Имеется два списока.
a = ['aa', 'bb', 'cc', 'nn!', 'rr#', 'tt' ]
b = ['!' , '#']
result1 = []
result2 = []
Пишу условия.
for i in a:
for g in b:
if g in i:
result1.append(i)
if g not in i:
result2.append(i)
Первое условие выполняется верно, находит элементы в котором есть символы.
result1 = ['nn!', 'rr#']
А вот со вторым проблемка. Почему добавляет элементы с символами?
result2 = ['aa', 'aa', 'bb', 'bb', 'cc', 'cc', 'nn!', 'rr#', 'tt', 'tt']
Ответы (2 шт):
Автор решения: frozencoast
→ Ссылка
В вашем коде not in работает как положено, а вот логика кода не совсем верная. Следующий код вернет вам желаемый результат:
a = ['aa', 'bb', 'cc', 'nn!', 'rr#', 'tt' ]
b = ['!' , '#']
result1 = []
result2 = []
for i in a:
contains = False
for g in b:
if g in i:
contains = True
break
if contains:
result1.append(i)
else:
result2.append(i)
print(result1)
print(result2)
Автор решения: splash58
→ Ссылка
можно записать это все чуть короче, пользуясь возможностями языка
a = ['aa', 'bb', 'cc', 'nn!', 'rr#', 'tt' ]
b = ['!' , '#']
result1 = []
result2 = []
for i in a:
if any(g in i for g in b):
result1.append(i)
else:
result2.append(i)
print(result1, result2)
или даже немного с извращением :)
for i in a:
(result1 if any(g in i for g in b) else result2).append(i)
print(result1, result2)