Форум сайта python.su
Здравствуйте. Подскажите пожалуйста правильно ли я понял, что в bin операция a^b представляет ничто иное как a xor b? ПОчему тогда используется значок конъюкции? И еще подскажите пожалуйста, где можно поподробнее прочитать о логических операциях с bin числами? В гугле искал везде пишется только о том что bin() используется только для перевода в двоичный формат и не слова о подобной операции выше… Заранее спасибо
def ham_distance(data): a,b=data return bin(a^b).count('1')
Офлайн
un1acker
я ленивый и тупой сделал бы намного проще
In [88]: def ham_distance(a,b): if not len(a) == len(b): print "Wrong!" return len([True for x,y in zip(a,b) if not x==y]) In [89]: ham_distance("ads","ars") Out[89]: 1
(lambda a,b:len([True for x,y in zip(a,b) if not x==y]))("abs","ars") Out[91] 1
Отредактировано Singularity (Авг. 3, 2013 20:53:19)
Офлайн
Вообще не знаю, где вы искали:
Офлайн
Примерно в 100-1000 раз быстрее https://pypi.python.org/pypi/python-Levenshtein/0.10.2
sudo pip install python-Levenshtein
import Levenshtein Levenshtein.hamming(string1,string2)
Офлайн