gpt4 book ai didi

具有多个条件的python lambda列表过滤

转载 作者:太空狗 更新时间:2023-10-30 01:42:39 49 4
gpt4 key购买 nike

我对使用 lambda 过滤列表的理解是,过滤器将返回列表中所有为 lambda 函数返回 True 的元素。在这种情况下,对于以下代码,

inputlist = []
inputlist.append(["1", "2", "3", "a"])
inputlist.append(["4", "5", "6", "b"])
inputlist.append(["1", "2", "4", "c"])
inputlist.append(["4", "5", "7", "d"])

outputlist = filter(lambda x: (x[0] != "1" and x[1] != "2" and x[2] != "3"), inputlist)
for item in outputlist: print(item)

输出应该是

['4', '5', '6', 'b']
['1', '2', '4', 'c']
['4', '5', '7', 'd']

但是我得到的输出是

['4', '5', '6', 'b']
['4', '5', '7', 'd']

如果我使用

,我会得到预期的输出
outputlist = filter(lambda x: (x[0] != "1" or x[1] != "2" or x[2] != "3"), inputlist)

我在做什么傻事?还是我的理解不正确?

最佳答案

x = ['1', '2', '4', 'c'],所以 x[1]=='2',这使得表达式 (x[0] != "1"and x[1] != "2"and x[2] != "3") 被评估为 False.

当条件由 and 连接时,只有当所有条件都为 True 并且它们由 连接时,它们才返回 True或者,当它们中的第一个被评估为True时,它们返回True

关于具有多个条件的python lambda列表过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38367118/

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