如何按不同条件过滤列表?

我编写了以下代码:


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 个条件之一的数字列表。


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


侃侃无极
浏览 142回答 3
3回答

慕婉清6462132

使用结合所有条件的单个 if 语句if&nbsp;element<0&nbsp;and&nbsp;element%9==0&nbsp;and&nbsp;element%2!=0&nbsp;: &nbsp;&nbsp;&nbsp;&nbsp;list2.append(element)

开心每一天1111

尝试列表理解:list_2&nbsp;=&nbsp;[i&nbsp;for&nbsp;i&nbsp;in&nbsp;list_1&nbsp;if&nbsp;i<0&nbsp;and&nbsp;i%9==0&nbsp;and&nbsp;i%2&nbsp;!=0]

慕斯王

您还可以使用函数filter()和&代替AND(|代替OR):list(filter(lambda&nbsp;x:&nbsp;x&nbsp;<&nbsp;0&nbsp;&&nbsp;x&nbsp;%&nbsp;9&nbsp;==&nbsp;0&nbsp;&&nbsp;x&nbsp;%&nbsp;2&nbsp;!=&nbsp;0,&nbsp;list_1)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python