我的目标是使用列表理解来返回列表中的值。具体来说,如果 x 在列表中,我想删除所有其他值。但是,如果 x 不在列表中,我想返回相同的值(不返回空列表)。
list1 = ['d','x','c']
list2 = ['d','b','c']
list1 = [x for x in list1 if x == 'x']
list2 = [x for x in list2 if x == 'x']
List2 将返回
[]
。我想要它在哪里['d','b','c']
list2 = [x for x in list2 if x == 'x' else list2]
退货:
list2 = [x for x in list2 if x == 'x' else list2]
^^^^
SyntaxError: invalid syntax
这将保留所有不是 x 的元素
list2 = [x for x in list2 if x != 'x']
但是,如果 x 在列表中,它仍然会返回所有其他元素。
所以,你需要两张通行证
def filter_x(lst):
if 'x' in lst:
return [x for x in lst if x == 'x']
else:
return lst