Сравните два списка строк с дубликатами и выведите различия - PullRequest
0 голосов
/ 28 октября 2018

Я очень плохо знаком с Python и у меня проблемы с моим кодом.Я хочу написать функцию, которая сравнивает со списками и печатает для пользователя, какие элементы существуют в list1, но не в lis2.

Например, ввод может быть:

list1=["john", "jim", "michael", "bob"]
list2=["james", "edward", "john", "jim"]

И тогда вывод должен быть:

Names in list1, but not in list2: Michael, Bob
Names in list2, but not in list1: James, Edward

Спасибо за помощь!

(РЕДАКТИРОВАТЬ: это мой код до сих пор:

def compare_lists(list1, list2):

    for name1 in list1:
        if name1 not in list2:
                  print("Names in list1, but not in list2: ", name1)

    for name2 in list2:
        if name2 not in list1:
                 print("Names in list1, but not in list2: ", name2)

И моя проблема в том, что вывод печатается дважды:

Names in list1, but not in list2: Michael
Names in list1, but not in list2: Bob
Names in list2 but not in list1: James
Names in list2 but not in list1: Edward

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Вы можете сохранить результат во временной строке, а затем распечатать их.

def compare_lists(list1, list2):

    str1 = ''
    for name1 in list1:
        if name1 not in list2:
            str1 += name1 + ' '
    print("Names in list1, but not in list2: ", str1)

    str2 = ''
    for name2 in list2:
        if name2 not in list1:
            str2 += name2 + ' '
    print("Names in list1, but not in list2: ", str2)

list1=["john", "jim", "michael", "bob"]
list2=["james", "edward", "john", "jim"]

compare_lists(list1, list2)
0 голосов
/ 28 октября 2018

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

list1=["john", "jim", "michael", "bob"]
list2=["james", "edward", "john", "jim"]

names1 = [name1 for name1 in list1 if name1 not in list2]
names2 = [name2 for name2 in list2 if name2 not in list1] 
print(names1)
print(names2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...