#python #list #difference
Вопрос:
Имея, например, эти две строки:
test1 = "line1 n line2 nline3"
test2 = "line1 n line2 nline2"
Как я могу напечатать весь элемент, который отличается от первого, сравнивая его со вторым?
В этом случае я хотел бы печатать только:
line3
Я пытаюсь сделать это с помощью этого кода:
differences = [item for item in test1 if item not in test2]
print (differences)
Но это только показывает:
['3']
Комментарии:
1. Вы предполагаете, что обе строки имеют одинаковую длину? У вас есть еще примеры?
2. @OneCricketeer Да, обе строки должны иметь одинаковую длину
Ответ №1:
Похоже, вы хотите разделить две строки на пробелы и символы новой строки, а затем сравнить элементы в каждом индексе списков и собрать те, которые отличаются?
Если это так, я предполагаю, что у вас есть такие данные, что вы получаете списки одинакового размера.
Сначала вы разделяете(), затем получаете элементы из обоих списков одновременно с помощью zip и выполняете простое сравнение.
Поскольку вы стремились к пониманию списка, вот все, что я сказал в коде:
test1 = "line1 n line2 nline3"
test2 = "line1 n line2 nline2"
difference = [item1 for item1, item2 in zip(test1.split(), test2.split()) if item1 != item2]
print(difference)
Правка: Кроме того, проблема с вашим кодом, в частности, заключалась в том , что вы переходили от символа к символу в строке test1
и проверяли, не существует ли в ней указанного символа test2
. Ну, персонаж 3
был единственным, кто этого не сделал, так что именно по этой причине вы получили этот вывод.
Ответ №2:
Вы также можете использовать set
разницу.
test1 = "line1 n line2 nline3"
test2 = "line1 n line2 nline2"
print(set(test1.split()).difference(set(test2.split())))