Python:如何检查两个字符串的匹配字符数?

2024-04-26 02:36:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我想问是否有更好的方法来检查两个不同字符串的字符数匹配。例如,当我输入单词“success”时,我想知道有多少个字符与单词“success”在准确的位置匹配。在本例中,“success”匹配“success”的7个字符中的5个。这个功能需要在一个更大的项目中实现。现在我有一个概念验证python代码:

word1 = input('Enter word1>')
word2 = input('Enter word2>')
#word1 is being compared to word2
word1_character_list = list(word1)
word2_character_list = list(word2)
matching_word_count = 0
for index in range(0,len(word2)):
    if word1_character_list[index] == word2_character_list[index]:
        matching_word_count = matching_word_count + 1
print(matching_word_count)

我想知道是否有一个更简单和/或更短的方法来做这件事?或者使用较少变量的方法。任何帮助都将不胜感激。你知道吗


Tags: 方法字符串inputindexcount单词listword
3条回答

您可以将for循环更改为以下内容:

for i, j in zip(word1, word2):
    if i != j:
        break
    matching_word_count += 1

此代码从第一个字符开始,并在字符不相同时立即中断。如果需要检查每个字符,则可以轻松地将代码修改为(与其他答案一样):

for i, j in zip(word1, word2):
    if i == j:
        matching_word_count += 1
matching_word_count = sum(map(str.__eq__, word1, word2))

或更具可读性:

matching_word_count = sum(c1 == c2 for c1, c2 in zip(word1, word2))

这是因为booleans是Python中整数的一个子类,具有True == 1False == 0。你知道吗

可以使用zip函数同时遍历两个字符串。而且,迭代列表中的项目并比较值而不是索引列表被认为是更为python的。你知道吗

例如:

>>> word1 = 'success'
>>> word2 = 'succeed'
>>> matches = 0
>>> for letter1, letter2 in zip(word1, word2):
    if letter1 == letter2:
        matches +=1


>>> matches
5

如果你想真正发挥创造力,你可以用一句话:

>>> matches = sum([l1 == l2 for l1, l2 in zip(word1, word2)])

>>> matches

5

相关问题 更多 >