Mein Verständnis über das Filtern von Listen mit Lambda ist, dass der Filter alle Elemente der Liste zurückgibt, die True für die Lambda-Funktion zurückgeben. In diesem Fall für den folgenden Code,Python Lambda-Liste Filterung mit mehreren Bedingungen
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)
sollte die Ausgabe
['4', '5', '6', 'b']
['1', '2', '4', 'c']
['4', '5', '7', 'd']
sein, aber die Ausgabe, die ich erhalte, ist
['4', '5', '6', 'b']
['4', '5', '7', 'd']
ich die erwartete Ausgabe zu bekommen, wenn ich
outputlist = filter(lambda x: (x[0] != "1" or x[1] != "2" or x[2] != "3"), inputlist)
Was bin ich doi Dumm hier? Oder ist mein Verständnis nicht korrekt?
Wir können nicht sagen, ob Ihr Verständnis richtig ist, weil Sie uns nicht gesagt haben, was Sie erwarten, die 'Lambda'-Funktion zu tun. Wenn Sie die Bedingungen mit "und" verknüpfen, wird es nicht zu "wahr" ausgewertet, solange nicht alle Bedingungen erfüllt sind. Wenn Sie die Bedingungen mit "oder" verknüpfen, wird "wahr" ausgewertet, wenn nur eine der Bedingungen zutrifft. –
Jetzt fühle ich mich wirklich dumm! Ich denke, ich muss aufhören zu arbeiten und in den Sack fallen. Entschuldigung, dass du deine Zeit verschwendet hast. – user3300676