Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 3, 2013 18:24:28

un1acker
Зарегистрирован: 2013-08-03
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Логические операции с бинарными числами(расстояние Хемминга)

Здравствуйте. Подскажите пожалуйста правильно ли я понял, что в bin операция a^b представляет ничто иное как a xor b? ПОчему тогда используется значок конъюкции? И еще подскажите пожалуйста, где можно поподробнее прочитать о логических операциях с bin числами? В гугле искал везде пишется только о том что bin() используется только для перевода в двоичный формат и не слова о подобной операции выше… Заранее спасибо

def ham_distance(data):
    a,b=data
    return bin(a^b).count('1')

Офлайн

#2 Авг. 3, 2013 19:00:22

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Логические операции с бинарными числами(расстояние Хемминга)

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)

Офлайн

#3 Авг. 3, 2013 20:15:14

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Логические операции с бинарными числами(расстояние Хемминга)

Вообще не знаю, где вы искали:

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

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

..bw



Офлайн

#4 Авг. 3, 2013 20:55:37

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

Логические операции с бинарными числами(расстояние Хемминга)

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

sudo pip install python-Levenshtein

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

 import Levenshtein
 Levenshtein.hamming(string1,string2)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version