是否有函數比較兩個字符串(相同長度)相差多少個字符?我的意思是隻有替代。例如,AAA將與AAT相差1個字符。比較兩個字符串的Python
1
A
回答
3
這是一個不錯的zip功能用例!
def count_substitutions(s1, s2):
return sum(x != y for (x, y) in zip(s1, s2))
用法:
>>> count_substitutions('AAA', 'AAT')
1
從文檔:
zip(...)
zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]
Return a list of tuples, where each tuple contains the i-th element
from each of the argument sequences. The returned list is truncated
in length to the length of the shortest argument sequence.
4
這將工作:
>>> str1 = "AAA"
>>> str2 = "AAT"
>>> sum(1 for x,y in enumerate(str1) if str2[x] != y)
1
>>> str1 = "AAABBBCCC"
>>> str2 = "ABCABCABC"
>>> sum(1 for x,y in enumerate(str1) if str2[x] != y)
6
>>>
上述解決方案使用sum
,enumerate
和generator expression。
因爲True
可以計算爲1
,你甚至可以這樣做:
>>> str1 = "AAA"
>>> str2 = "AAT"
>>> sum(str2[x] != y for x,y in enumerate(str1))
1
>>>
但我個人更喜歡第一個解決方案,因爲它更清晰。
+0
美麗,謝謝 – goodcow
1
建立在什麼戳說我會建議jellyfish包。它有幾個距離度量,如你所要求的。從文檔實例:
IN [1]: jellyfish.damerau_levenshtein_distance('jellyfish', 'jellyfihs')
OUT[1]: 1
或使用例如:
IN [2]: jellyfish.damerau_levenshtein_distance('AAA','AAT')
OUT[2]: 1
這將爲許多不同的字符串長度工作,應該能夠處理大多數的你扔東西吧。
1
相關問題
- 1. 比較python中的兩個字符串?
- 2. 在python中比較兩個字符串
- 3. 比較兩個字符串[]
- 4. 比較兩個字符串?
- 5. 比較兩個字符串
- 6. C++比較兩個字符串文字
- 7. 比較兩個數字字符串值
- 8. 比較兩個字符串由字母
- 9. 比較兩個字符串的含義
- 10. 比較ruby中的兩個字符串
- 11. 比較C++中的兩個字符串
- 12. PowerShell的比較兩個字符串
- 13. 比較ArrayList中的兩個字符串
- 14. 比較兩個字符串中的Java
- 15. 比較兩個字符串的OBJ-C
- 16. 比較C#中的兩個字符串
- 17. 比較MIPS中的兩個字符串
- 18. 比較bash中的兩個字符串
- 19. 比較ANT中的兩個字符串
- 20. 比較兩個字符串中的值
- 21. 比較C++中的兩個字符串
- 22. 比較Android上的兩個字符串
- 23. 比較兩個字符串的ArrayList
- 24. 逐字比較.NET中兩個字符串的比較
- 25. 比較兩組字符串
- 26. 比較字符串兩場
- 27. 比較兩個包含數字的python字符串
- 28. 比較python中的三個字符串
- 29. 比較Python中的2個字符串
- 30. 多個值的字符串比較python
[Levenshtein distance](http://en.wikipedia.org/wiki/Levenshtein_distance)例如? – poke