Как я могу отфильтровать список по различным условиям?
Я написал следующий код:
list_1 = [5, 18, 3]
list_2 = []
for element in list_1:
if element < 0:
list_2.append(element)
elif element % 9 == 0:
list_2.append(element)
elif element % 2 != 0:
list_2.append(element)
else:
print('No number is valid')
print(list_2)
Проблема в том, что это возвращает список чисел, которые удовлетворяют хотя бы одному из 3 условий.
В результате я хочу получить список чисел, которые удовлетворяют всем трем условиям. Как я мог этого добиться?
3 ответа
Решение
Попробуйте понимание списка:
list_2 = [i for i in list_1 if i<0 and i%9==0 and i%2 !=0]
Используйте один оператор if, который сочетает в себе все ваши условия
if element<0 and element%9==0 and element%2!=0 :
list2.append(element)
Вы также можете использовать функцию filter()
а также &
вместо AND
(|
вместо OR
):
list(filter(lambda x: x < 0 & x % 9 == 0 & x % 2 != 0, list_1)