Сравнение 2 списков и печать различий

Я пытаюсь сравнить 2 разных списка и найти различия между ними. Скажем, например, у меня есть list 1, который состоит из cat,dog,whale,hamster, и список 2, который состоит из dog,whale,hamster. Как мне сравнить эти два, а затем присвоить переменную разнице, которая в данном случае равна cat. Однако порядок не имеет значения, если имеется более одного различия, каждое из этих различий должно быть присвоено отдельной переменной.

В моем реальном коде я сравниваю html, который состоит из тысяч строк, поэтому я бы предпочел что-то как можно быстрее, но любой ценится :)

вам нужно быть более точным в отношении того, что вы подразумеваете под «разницей». Например. порядок имеет значение? Если бы list было ['whale', 'cat','hamster','dog'], ответ был бы таким же?

juanpa.arrivillaga 26.12.2020 15:17

Если есть несколько значений в качестве разницы, ожидаете ли вы, что несколько переменных присвоят каждой переменной значение.

Gopi krishna 26.12.2020 15:17
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
63
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

str1 = 'cat,dog,whale,hamster'
str2 = 'dog,whale,hamster'

Измените строки на наборы Python:

set1 = set(str1.split(','))
set2 = set(str2.split(','))

Получите разницу:

result = set1 - set2

Что печатает:

{'cat'}

Вы можете преобразовать его в список или строку:

result_as_list = list(result)
result_as_string = ','.join(result)

Это решение работает до тех пор, пока значения входной строки уникальны (в пределах одной строки).

Beniamin H 26.12.2020 15:26
Ответ принят как подходящий

Если ваши списки могут содержать дубликаты или вам нужно знать элементы, которые есть только в одном из двух списков, вы можете использовать Counter (из модуля collections):

list1 = ['cat','dog','whale','hamster','dog']
list2 = ['dog','whale','hamster','cow','horse']

from collections import Counter

c1,c2 = Counter(list1),Counter(list2)
differences = [*((c1-c2)+(c2-c1)).elements()]

print(differences) # ['cat', 'dog', 'cow', 'horse']

Вот как ты собираешься это сделать. Определенная здесь функция напечатает разницу между двумя списками.

def Diff(list1, list2):
    li_dif = [i for i in list1 + list2 if i not in list1 or i not in list2]
    return li_dif
 
# Driver Code
list1 = ['cat','dog','whale','hamster']
list2 = ['dog','whale','hamster']
diff = Diff(list1, list2)
print(diff)

выход:

['cat']

здесь cat генерируется переменной diff

Теперь, если есть более одного различия, следующим образом:

def Diff(list1, list2):
    li_dif = [i for i in list1 + list2 if i not in list1 or i not in list2]
    return li_dif
 
# Driver Code
list1 = ['cat','dog','whale','hamster','ostrich','yak','sheep','lion','tiger']
list2 = ['dog','whale','hamster']
diff = Diff(list1, list2)
print(diff)

вывод будет:

['cat','ostrich','yak','sheep','lion','tiger']

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

diff==list3 вот, list3=['cat','ostrich','yak','sheep','lion','tiger']

Здесь всего 6 элементов списка, каждому из них мы можем присвоить переменную следующим образом:

    v1=list3[0]
    v2=list3[1]
    v3=list3[2]
    v4=list3[3]
    v5=list3[4]
    v6=list3[5]
    

Другие вопросы по теме