假设我有一个清单
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条件?
[i for i in my_list if '91' not in i and '18' not in i]
请注意,您不应使用
list
作为变量名,它会隐藏内置函数。
如果您有两个以上的值(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']
>>>
您可以“合并”这两个条件:
if ((not '91' in i) and (not '18' in i))