是否有函数比较两个字符串(相同长度)相差多少个字符?我的意思是只有替代。例如,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