gpt4 book ai didi

python - Lambda 函数和 0

转载 作者:太空狗 更新时间:2023-10-30 02:23:15 25 4
gpt4 key购买 nike

我想创建一个函数,用 lambda 函数更改列表中的每个元素。

a = [1,5,2,4]

def func1(list,func2):
for x in range(len(list)):
list[x] = func2(list[x])

func1(a,lambda x: x>3 and 10 or x)
print a

结果是[1,10,2,10]

这没关系。但是我把'10'改成了'0'

func1(a,lambda x: x>3 and 0 or x)

结果是[1,5,2,4]

为什么结果不是 [1,0,2,0]?

对不起,我的英语很差。

最佳答案

你的问题是0 is being evaluated as False这意味着使用 the and-or trick因为条件表达式失败。

Python 2.5 introduced "proper" conditional expressions形式:

x = true_value if condition else false_value

所以你可以替换:

lambda x: x>3 and 0 or x

与:

lambda x: 0 if x > 3 else x

此外,您可以使用 the map function如果您不介意更新列表,则替换 func1:

a = map(lambda x: 0 if x > 3 else x,a)
print a

如果您确实想就地修改列表,您可以使用 the enumerate function稍微简化您的代码:

def func1(list,func2):
for i,x in enumerate(list):
list[i] = func2(x)

关于python - Lambda 函数和 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5115897/

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