Проверьте, присутствует ли двойной элемент в первом списке во втором списке, и выведите выходные данные. - PullRequest
0 голосов
/ 06 февраля 2019

Предположим,

List1 = [ 23, 45, 6, 7, 34]
List2 = [46, 23, 1, 14, 68, 56]

Сравните List1 и List2 и напечатайте элемент List1, который имеет двойное значение в List2

Output = [23,7,34]

Ответы [ 4 ]

0 голосов
/ 06 февраля 2019

Вы уже получили ответы.Однако ради интереса я придумал следующий метод.Я не тестировал все подходы, перечисленные здесь.Это может быть весело, чтобы сделать это.Это интересный вопрос, и его можно изучить подробнее.Тем не менее, просто ради этого я представляю решение, которое я сделал.

import numpy as np
l = np.array(List1) * 2
print(l)

## array([46, 90, 12, 14, 68])

print(set(l) & set(List2))
## {68, 46, 14}

l2 = set(l) & set(List2)

print([List1[list(np.nonzero(l == i))[0][0]] for i in l if i in l2])
## [23, 7, 34]

Он использует широковещание numpy вместе с быстрой операцией пересечения множества Python.Это может быть полезно, если два списка очень велики.

0 голосов
/ 06 февраля 2019

Вы можете преобразовать list2 в набор для эффективных поисков и использовать понимание списка с указанным условием для желаемого вывода:

set2 = set(List2)
[i for i in List1 if i * 2 in set2]
0 голосов
/ 06 февраля 2019

У вас уже есть ответ, но только ради простоты.В основном вы хотите перебрать List1 и проверить, есть ли двойное значение в List2.Если это так, добавьте элемент в массив output.

List1 = [ 23, 45, 6, 7, 34]
List2 = [46, 23, 1, 7, 14, 68, 56]

output = []

for i in List1:
    if i*2 in List2:
        output.append(i)

print output
0 голосов
/ 06 февраля 2019

Попробуйте это:

Output = [i for i in List1 if i*2 in List2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...