假设我有一个列表
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)
所以在这里我想用列表推导来实现这一点。
如果条件符合列表中的条件,是否还要写两个?
答案 0 :(得分:22)
[i for i in my_list if '91' not in i and '18' not in i]
请注意,您不应将list
用作变量名称,它会影响内置函数。
答案 1 :(得分:9)
如果您有两个以上的值(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']
>>>
答案 2 :(得分:1)
您可以“合并”两个条件:
if ((not '91' in i) and (not '18' in i))