Найти разницу между двумя строками в python - PullRequest
0 голосов
/ 13 января 2020

Найдите символы, которые встречаются в одной строке, но не в другой.

Я попытался использовать функцию s1.difference(s2), чтобы получить разницу в символах между двумя строками, которые вводятся пользователем. Однако при запуске программы компьютер возвращает set(). Как я могу получить свой код для возврата различных символов? Спасибо.

Ответы [ 2 ]

1 голос
/ 13 января 2020

Без дубликатов

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

In [2]: a = set('abcdef')
In [4]: b = set('ihgfed') 
In [5]: b.difference(a)  # all elements that are in `b` but not in `a`.
Out[5]: {'g', 'h', 'i'}

In [6]: b ^ a   # symmetric difference of `a` and `b` as a new set
Out[6]: {'a', 'b', 'c', 'g', 'h', 'i'}

Если вы хотите, чтобы это был список:

In [7]: list(b.difference(a))                                                             
Out[7]: ['i', 'g', 'h']

Проверка нескольких вхождения

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

In [8]: import collections
In [9]: collections.Counter(a) - collections.Counter(b)                                   
Out[9]: Counter({'c': 1, 'a': 1, 'b': 1})

или в виде строки:

In [15]: c = collections.Counter('abcccc') - collections.Counter('cbd')                   

In [16]: c                                                                                
Out[16]: Counter({'a': 1, 'c': 3})

In [17]: ''.join(c.elements())
Out[17]: 'accc'
0 голосов
/ 13 января 2020

Для этого вы можете использовать sets:

a = 'abcd'
b = 'bcd'

diff = set(char for char in a) - set(char for char in b)
print(diff)

>>> {'a'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...