通过比较 2 个列表创建布尔列表

Posted

技术标签:

【中文标题】通过比较 2 个列表创建布尔列表【英文标题】:Creating Boolean list from comparing 2 lists 【发布时间】:2019-10-30 19:22:32 【问题描述】:

我有 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]

【问题讨论】:

您尝试解决什么问题 - 您的解决方案的问题在哪里?您的解决方案在哪里 -> minimal reproducible example?您显示的代码中的导入和内容有什么用?什么是 [x1, x2, x3, x4, x5] - 那些是 NameErrors,因为它们是变量名,您没有在任何地方定义它们 - [x2, x3] 也是如此。请edit你的问题,提供一个最小的例子和你的代码有问题。显示输入和输出以及什么不起作用。谢谢。 【参考方案1】:

这是映射,不是过滤,它是单行的:

list(map(lambda x: x in List_B, List_A))

你可以使用列表推导,

[x in List_B for x in List_A]

但我个人觉得在两种不同的意义上看到 x in 令人困惑。

【讨论】:

这是一条评论。【参考方案2】:

使用列表理解:

List_C = [elem in List_B for elem in List_A]

这基本上相当于一个 for 循环,对于 List_A 的每个元素,将 elem in List_B 的结果附加到一个新列表中。

【讨论】:

以上是关于通过比较 2 个列表创建布尔列表的主要内容,如果未能解决你的问题,请参考以下文章

通过将第一个列表中的第一行项与第二个列表中的项进行比较来创建新列表

Python列表

列表的使用

在 python 中使用布尔列表

Java Stream:通过布尔谓词分为两个列表

python中几个常见的“黑盒子”之 列表list