Как проверить, содержит ли один список 2 элемента другого списка? - PullRequest
0 голосов
/ 28 октября 2019

Я хочу иметь возможность проверить, содержит ли один список 2 элемента другого списка (всего 3 элемента)

например:

list1 = ["a", "b", "c"]
list2 = ["a", "f", "g", "b"]

if #list2 contains any 2 elements of list1:
    print("yes, list 2 contains 2 elements of list 1")
else:
    print("no, list 2 does not contain 2 elements of list 1")

Ответы [ 7 ]

2 голосов
/ 28 октября 2019

Я бы использовал аналогичное описание, описанное в следующем вопросе, только на этот раз проверьте длину пересечения множеств: Как найти пересечение списка?

list1 = ["a", "b", "c"]
list2 = ["a", "f", "g", "b"]

if len(list(set(a) & set(b))) == 2:
    print("yes, list 2 contains 2 elements of list 1")
else:
    print("no, list 2 does not contain 2 elements of list 1")
0 голосов
/ 29 октября 2019

Это работает:

list1 = ["a", "b", "c"]
list2 = ["a", "f", "g", "b"]
val = 0
for idx in list1:
    for idx2 in list2:
        if idx == idx2:
            val += 1
if val == 2:
    print("yes, list 2 contains 2 elements of list 1")
else:
    print("no, list 2 does not contain 2 elements of list 1")
0 голосов
/ 28 октября 2019
list1 = ["a", "b", "c"]
list2 = ["a", "f", "g", "b"]

if len(set(list1).intersection(set(list2))) == 2:
    print("yes, list 2 contains 2 elements of list 1")
else:
    print("no, list 2 does not contain 2 elements of list 1")

Метод .intersection принимает два набора и находит то, что является общим между ними. Если между ними есть два элемента, то у вас есть то, что вы хотите.

0 голосов
/ 28 октября 2019
count = 0
for ele in list2:
    if ele in list1:
        count += 1
if count == 2:
    print ("yes, list 2 contains 2 elements of list 1")
else:
    print ("no, list 2 does not contain 2 elements of list 1")
0 голосов
/ 28 октября 2019

Вы можете использовать itertools.combinations(), чтобы получить все наборы из двух элементов из list2 и посмотреть, являются ли они подмножествами list1:

import itertools

if any(set(comb).issubset(set(list1)) for comb in itertools.combinations(list2, 2)):
    print("yes, ...")
...
0 голосов
/ 28 октября 2019

def my_func(list1, list2):
    count = 0
    for i in list1:
        for j in list2:
            if(i == j) : count += 1
    print(count)
    if(count >= 2) : return True
    else: return False


list1 = ["a", "b", "c"]
list2 = ["a", "f", "g", "b"]

if my_func(list1, list2):#list2 contains any 2 elements of list1:
    print("yes, list 2 contains 2 elements of list 1")
else:
    print("no, list 2 does not contain 2 elements of list 1")
0 голосов
/ 28 октября 2019

Вы можете написать функцию для проверки общих элементов между двумя списками и после проверки, чтобы количество этих элементов равнялось 2.

Например:

def intersection(list1, list2): 
     lst3 = [value for value in list1 if value in list2] 
     return lst3 


list1 = ["a", "b", "c"]
list2 = ["a", "f", "g", "b"]

if len(intersection(list1, list2) == 2):
    print("yes, list 2 contains 2 elements of list 1")
else:
    print("no, list 2 does not contain 2 elements of list 1")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...