我有2个列表要比较。 List_A包含我拥有的所有文件名,List B包含我想要的文件名。
作为输出的List_C是一个布尔列表,其长度与List_A相同。对于在List_B中找不到的文件显示false,对于在List_B中发现的文件显示true。
这是用于通过布尔值过滤元素列表。
# Load the Python Standard and DesignScript Libraries
import sys
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
# The inputs to this node will be stored as a list in the IN variables.
dataEnteringNode = IN
List_A = IN[0]
List_B = IN[1]
OUT = List_C
A scenario
List_A = [x1, x2, x3, x4, x5]
List_B = [x2, x3]
List_C = [false, true, true, false, false]
答案 0 :(得分:1)
这是映射,而不是过滤,它是单行的:
list(map(lambda x: x in List_B, List_A))
您可以使用列表推导
[x in List_B for x in List_A]
但是我个人发现在两种不同的意义上看到x in
令人困惑。
答案 1 :(得分:0)
使用列表理解:
List_C = [elem in List_B for elem in List_A]
这基本上等于for循环,它为List_A的每个元素将elem in List_B
的结果附加到新列表中。