Без дубликатов
Вы можете использовать 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'