Создание логического списка из сравнения 2 списков - PullRequest
0 голосов
/ 17 июня 2019

У меня есть 2 списка, которые я хочу сравнить.List_A содержит все имена файлов, которые у меня есть, список B содержит имена файлов, которые я хочу.

List_C, являющийся выходом, является логическим списком той же длины, что и List_A.Показывает false для тех файлов, которые не могут быть найдены в List_B, и true для тех, кто находится в List_B.

Это для фильтрации списка элементов по логическим значениям.

# 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]

Ответы [ 2 ]

1 голос
/ 17 июня 2019

Это отображение, а не фильтрация, и это одна строка:

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

Вы можете использовать понимание списка,

[x in List_B for x in List_A]

но я лично нахожу, что x in в двух разных смыслах сбивает с толку.

0 голосов
/ 17 июня 2019

Использование списка понимания:

List_C = [elem in List_B for elem in List_A]

Это в основном равно циклу for, который для каждого элемента List_A добавляет результат elem in List_B в новый список.

...