Как вернуть True / False для элементов в одном списке, найденных в другом списке - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь поработать над функцией, которая возьмет два списка и создаст новый список, равный первому, и вернет True или False, если каждый элемент в списке найден во втором списке. Я также включаю использование numpy в том случае, если хочу использовать большой список.

Я попробовал следующее, но не смог получить желаемый результат. Любая помощь приветствуется.

import numpy as np

def a_is_in(a, b):
    list1 = np.array(a)
    list2 = np.array(b)
    if list1 in list2:
        return False
    else:
        return True
    return

a = [3, 4, 8, 10, 11, 13]
b = [3, 6, 7, 13]
_is_in = a_is_in(a, b)
print(_is_in)
import numpy as np

def a_is_in(a, b):
    list1 = np.array(a)
    list2 = np.array(b)
    result = lambda list1, list2: any(i in list2 for i in list1)
    return result

a = [3, 4, 8, 10, 11, 13]
b = [3, 6, 7, 10, 13]
_is_in = a_is_in(a, b)
print(_is_in)

Возвращаемый результат, который я ищу, это список, который выглядит следующим образом: [Правда, Ложь, Ложь, Правда, Ложь, Правда]

Спасибо за ваше время.

Ответы [ 3 ]

2 голосов
/ 29 марта 2019

Если вы используете numpy, вы можете использовать функцию np.isin.

# arr1 and arr2 are your numpy arrays.
result = np.isin(arr1, arr2)
1 голос
/ 29 марта 2019

Я пытался сделать это, используя простой синтаксис (как новичок, я предпочитаю не заходить слишком далеко). Но я думаю, что использование цикла for для этого может быть слишком сложным, и могут быть другие более простые варианты.

def a_is_in(a, b):
    result =[]
    for i in range(0,len(a)):
        if a[i] in b:
            result.append(True)
        else:
            result.append(False)
    return(result)
1 голос
/ 29 марта 2019

Вы можете использовать простое понимание списка и использовать i in b в качестве условия, которое вернет либо True, либо False

Первый пример

a = [3, 4, 8, 10, 11, 13]
b = [3, 6, 7, 13]
_is_in = [i in b for i in a]
print(_is_in)
# [True, False, False, False, False, True]

Второй пример

a = [3, 4, 8, 10, 11, 13]
b = [3, 6, 7, 10, 13]
_is_in = [i in b for i in a]
print(_is_in)
# [True, False, False, True, False, True]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...