有没有办法在Python的列表推导中使用两个if条件

问题描述 投票:0回答:3

假设我有一个清单

my_list = ['91 9925479326','18002561245','All the best','good']

现在我想忽略列表中以

91
18
开头的字符串,如下所示

result = []
for i in my_list:
   if not '91' in i:
      if not '18' in i:
         result.append(i) 

所以在这里我想通过列表理解来实现这一点。

有没有办法在列表推导中写两个if条件?

python list
3个回答
57
投票
[i for i in my_list if '91' not in i and '18' not in i]

请注意,您不应使用

list
作为变量名,它会隐藏内置函数。


12
投票

如果您有两个以上的值(91 和 18) 或者它们是动态生成的 最好使用这种结构:

[i for i in my_list if not i.startswith(('91', '18'))]

或者,如果您想检查

91
18
是否在字符串中(不仅在开头),请使用
in
而不是
startswith

[i for i in my_list if all(x not in i for x in ['91', '18'])]

使用示例:

>>> my_list = ['91 9925479326','18002561245','All the best','good']
>>> [i for i in my_list if all(not i.startswith(x) for x in ['91', '18'])]
['All the best', 'good']
>>> 

3
投票

您可以“合并”这两个条件:

if ((not '91' in i) and (not '18' in i))
© www.soinside.com 2019 - 2024. All rights reserved.