Найдите перекрывающиеся числа между двумя заданными списками и затем напечатайте их в новый список, только если новый список имеет максимальную длину - PullRequest
0 голосов
/ 07 апреля 2020

Задача :

С учетом двух списков a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

Печать нового списка перекрывающихся чисел

(только для печати, если новый список имеет максимальная длина )

общий , если два начальных списка изменены)

Основной код : (печать всех возможных случаев)

a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

listcommonab = []

for numA in a:
    if numA in b: 
        listcommonab.append(numA)
        print(listcommonab)
    else: 
        print(" ")

Результат :

    [1]

    [1, 1]

    [1, 1, 2]

    [1, 1, 2, 3]

    [1, 1, 2, 3, 5]

    [1, 1, 2, 3, 5, 8]

    [1, 1, 2, 3, 5, 8, 13]

Попытка # 1

a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

listcommonab = []

i = 0

for numA in a: 

listcommonab.append(numA)

i = i+1

if numA in b and i == 7: 
   print(listcommonab)
else: 
    print(" ")

Попытка результата # 1

 [1, 1, 2, 3, 5, 8, 13]

Она выводит ожидаемый результат, но этот код недостаточно общий, потому что я еще нужно проверить, если я == 7, чтобы напечатать ожидаемый список.

Любая идея, чтобы сделать этот код более общим и может применяться, если два начальных списка изменены ( я неизвестен) ?

1 Ответ

0 голосов
/ 07 апреля 2020

Вы можете использовать наборы пересечения (если вам нужны только уникальные значения):

res = set(list_a).intersection(set(list_b))
print(list(res))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...