gpt4 book ai didi

Python内置列表过滤不返回无项目

转载 作者:行者123 更新时间:2023-11-28 22:08:08 24 4
gpt4 key购买 nike

当我尝试过滤列表时,我在输出中丢失了 type None 项。我的代码如下:

def filter_compute(my_list):
return list(filter(lambda x: x>5 if type(x)==int else x, map_compute(my_list)))

filter_compute(['cup', '321', 2, ['x'], 4])

map_compute 的输出应该如下所示:

map_compute(['cup', '321', 2, ['x'], 4])
output ['puc', '123', 4, None, 16]

因此从 map_compute 到过滤器函数的可迭代应该是:['puc', '123', 4, None, 16]

我期望的输出是:['puc', '123', None, 16]

但我得到的输出是:['puc', '123', 16]

由于某种原因,None 项目没有输出。

最佳答案

filter 采用谓词,即返回 bool 值和可迭代的函数。您的谓词 lambda x: x>5 if type(x)==int else x,如果元素是大于 5 的整数,则返回 TrueFalse 如果它是小于或等于 5 的整数,否则为元素本身

当元素为 None 时,filter 因此会测试 None 的真实性,结果为 False , 因此它被过滤掉了。

如果你想过滤掉 <= 5 的整数,在元素是不同类型的情况下返回 True:

def filter_compute(my_list):
return list(filter(lambda x: x>5 if isinstance(x, int) else True, map_compute(my_list)))

filter_compute(['cup', '321', 2, ['x'], 4])

一般来说,很多人觉得 filter 有点困惑,更喜欢列表理解:

def filter_compute(my_list):
return [x for x in my_list if not (isinstance(x, int) and x <= 5)]

关于Python内置列表过滤不返回无项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58863415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com