Найти - Пользователи
Полная версия: Логические операции с бинарными числами(расстояние Хемминга)
Начало » Python для новичков » Логические операции с бинарными числами(расстояние Хемминга)
1
un1acker
Здравствуйте. Подскажите пожалуйста правильно ли я понял, что в bin операция a^b представляет ничто иное как a xor b? ПОчему тогда используется значок конъюкции? И еще подскажите пожалуйста, где можно поподробнее прочитать о логических операциях с bin числами? В гугле искал везде пишется только о том что bin() используется только для перевода в двоичный формат и не слова о подобной операции выше… Заранее спасибо
def ham_distance(data):
    a,b=data
    return bin(a^b).count('1')
Singularity
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

bw
Вообще не знаю, где вы искали:
Я полагаю вы понимаете, что для больших объёмов, Python не лучший счетовод.

p.s. `bin` не используется для перевода в “двоичный формат” (что это вообще за формат такой), он делает из числа строку (соотв. вида), аналоги: `hex` (int->str), `oct` (int->str) и `str` (int->str).

..bw
Alen
Примерно в 100-1000 раз быстрее https://pypi.python.org/pypi/python-Levenshtein/0.10.2

sudo pip install python-Levenshtein

Работает так:

 import Levenshtein
 Levenshtein.hamming(string1,string2)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB