Как я могу отфильтровать список по различным условиям? - PullRequest
0 голосов
/ 08 марта 2019

Я написал следующий код:

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 ]

3 голосов
/ 08 марта 2019

Используйте один оператор if, который объединяет все ваши условия

if element<0 and element%9==0 and element%2!=0 :
    list2.append(element)
2 голосов
/ 08 марта 2019

Вы также можете использовать функции filter() и & вместо AND (| вместо OR):

list(filter(lambda x: x < 0 & x % 9 == 0 & x % 2 != 0, list_1)
2 голосов
/ 08 марта 2019

Попробуйте понимание списка:

list_2 = [i for i in list_1 if i<0 and i%9==0 and i%2 !=0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...