首页 > 解决方案 > 我想结合 map & lambda 来计算列表中满足给定条件的项目数

问题描述

我想结合 map & lambda 来计算列表中满足给定条件的项目数。我尝试了以下代码,但出现错误:

<lambda>() missing 1 required positional argument: 'y'

我尝试的代码如下:

x = [3,7,6,4,2,8,3,4,6,3,6,6,4,6,3,3,6,4,7,7,4]

y = 4

z = map(lambda x, y: [i>=y for i in x], (x, y))

print (sum(z))

预期的输出将是 10(因为列表中的 10 个值大于 4)。

标签: python-3.xlistdictionarylambdacount

解决方案


例如使用 map 和 lambda。

x = [3, 7, 6, 4, 2, 8, 3, 4, 6, 3, 6, 6, 4, 6, 3, 3, 6, 4, 7, 7, 4]
y = 4
z = map(lambda x: (1 if x > y else 0), x)
print(sum(z))

请注意,您不能y在 map/lambda 中使用,因为您不能在int.

如果你绝对想使用第二个参数,你必须传递y它以便它是可迭代的:

z = map(lambda x, y: (1 if x > y else 0), x, [y] * len(x))
print(sum(z))

它有效,但我认为这不是一个好习惯。


推荐阅读