0
我幾天前開始學習Python 3,所以如果我的代碼很差,我很抱歉。最小海明距離
我寫了一個腳本來查找列表中字符串的最小值Hamming distance。現在我將使用的字符串是相同長度的二進制字,所以我的第一個問題是在Python中是否有一個按位解決方案?
其次,我的代碼是否正確?如果是的話,提高效率的最佳方法是什麼?我的搜索沒有返回Python 3的答案,這就是爲什麼我在這裏問。
def min_ham_dist(a):
min_dist = len(a[0]) # Defaults minimum distance to maximum length of string.
for i in range(len(a)):
for j in range(i+1, len(a)): # Compares all words after ith word.
dist = 0
for k in range(len(a[i])):
if a[i][k] != a[j][k]:
dist += 1
if dist < min_dist:
min_dist = dist
return min_dist
非常感謝
整數是否可以有任意長度?或者他們有最大長度? –
在這種情況下,它們是固定的。我寫了這個解決一個相當簡單的問題,用一個長度爲12的16個二進制單詞列表。它應該是通過視覺解決的,但是我覺得腳本最好能減少人爲錯誤。儘管可以看到該腳本適用於任意長度,但會很高興。 – Necessary
這個維基百科頁面上有一個非常簡潔的Python 3示例;)它基本上顯示了你需要做什麼:使用zip()壓縮兩個輸入字符串,如果它們具有相同的長度,則比較每一對在zip中,保持有多少不相等的數量。 – Dartmouth