0

我编写了以下代码:

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)

问题是这会返回一个至少满足三个条件之一的数字列表。

我想要的结果是满足所有三个条件的数字列表。我怎么能做到这一点?

4

3 回答 3

3

使用结合所有条件的单个 if 语句

if element<0 and element%9==0 and element%2!=0 :
    list2.append(element)
于 2019-03-08T11:45:32.503 回答
2

尝试列表理解:

list_2 = [i for i in list_1 if i<0 and i%9==0 and i%2 !=0]
于 2019-03-08T11:44:53.520 回答
2

您还可以使用函数filter()and&而不是AND(|而不是OR):

list(filter(lambda x: x < 0 & x % 9 == 0 & x % 2 != 0, list_1)
于 2019-03-08T12:01:02.803 回答