我的目标是使用列表理解来返回列表中的值.具体来说,如果列表中有'x',我想删除所有其他值.但是,如果列表中没有'x',我想返回相同的值(而不是返回空列表).

list1 = ['d','x','c']
list2 = ['d','b','c']

list1 = [s for s in list1 if s == 'x']
list2 = [s for s in list2 if s == 'x']

列表2将返回[].我想要的地方['d','b','c']

list2 = [s for s in list2 if s == 'x' else list2]

退货:

list2 = [s for s in list2 if s == 'x' else list2]
                                      ^^^^
SyntaxError: invalid syntax

推荐答案

这将保留所有不是x的元素

list2 = [x for x in list2 if x != 'x']

然而,如果x在列表中,它仍然会返回所有其他元素.

因此,您需要两次判断x是否存在,因为单独列表理解无法返回该信息

def filter_x(lst):
  if 'x' in lst:
    return [x for x in lst if x == 'x']
  else:
    return lst

Python相关问答推荐

如何从FDaGrid实例中删除某些函数?

如何使用数组的最小条目拆分数组

通过pandas向每个非空单元格添加子字符串

在vscode上使用Python虚拟环境时((env))

使用密钥字典重新配置嵌套字典密钥名

如何合并两个列表,并获得每个索引值最高的列表名称?

如何在Python中使用另一个数据框更改列值(列表)

在Python中使用if else或使用regex将二进制数据如111转换为001""

幂集,其中每个元素可以是正或负""""

在输入行运行时停止代码

如何创建引用列表并分配值的Systemrame列

为什么调用函数的值和次数不同,递归在代码中是如何工作的?

通过追加列表以极向聚合

在Docker容器(Alpine)上运行的Python应用程序中读取. accdb数据库

我对这个简单的异步者的例子有什么错误的理解吗?

我什么时候应该使用帆布和标签?

Pandas:将值从一列移动到适当的列

对于数组中的所有元素,Pandas SELECT行都具有值

如何在基于时间的数据帧中添加计算值

如何删除剪裁圆的对角线的外部部分