如果值不存在,则列表理解返回列表

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

我的目标是使用列表理解来返回列表中的值。具体来说,如果 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
python list-comprehension
1个回答
0
投票

这将保留所有不是 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
© www.soinside.com 2019 - 2024. All rights reserved.