gpt4 book ai didi

python - 遍历两个字符串,当相同索引处的字符匹配时返回计数

转载 作者:太空宇宙 更新时间:2023-11-03 12:33:05 26 4
gpt4 key购买 nike

我有两个词,一个是用户输入的字符串,另一个是从文本文件中随机选择的词。我想返回两个字符串中相等的计数值并共享相同的字符串索引。例如 word1 = 'bleed', word2 = slice: similar = 1.

word1 = 'frog'
word2 = 'friend'
correct = 0

if len(word1) > len(word2):
for i in range(len(word2)):
if word1[i] == word2[i]:
correct =+ 1
else:
correct == 0

else:
for i in range(len(word1)):
if word1[i] == word2[i]:
correct =+ 1
else:
correct == 0

我是编程新手,不幸的是,我的尝试在 correct = 1 时达到最大值。对于我在示例 frog 和 friend 中使用的词,我希望看到 correct = 2,我的代码生成 correct = 1。如何我添加正确,超过 1?谢谢

最佳答案

使用 zip()filter() 内置函数就容易多了:

Python 2.x:

In [23]: word1 = 'frog'
In [24]: word2 = 'friend'
In [25]: print len(filter(lambda (x, y): x == y, zip(word1, word2)))
2

Python 3.x(请参阅有关指针的评论:更改):

>>> word1 = 'frog'
>>> word2 = 'friend'
>>> len(list(filter(lambda xy: xy[0] == xy[1], zip(word1, word2))))
2

更新:由于您是编程新手,我将尝试稍微解释一下这个解决方案:

Python 支持序列(通常被认为是有序的项目列表),例如 [1,2,3]['a', 'b', ' c', 123, 456]。但是,Python 也将 strings 视为有序的字符列表,因此 'hello world' 也是一个列表。因此,您也可以在字符串上应用 Python 的列表相关运算符/内置函数。因此,您的问题简化为将 word1word2 视为列表,并在这些列表中找到它们的项目匹配的索引。

因此让我们为此使用 Python 的特殊函数。zip 是一个漂亮的函数,它接受多个序列,并生成一个新列表,其中索引 X 处的每个项目由索引 X 处的值组成在每个输入序列中。例如,zip([1,2], [3,4]) 变为 [(1,3), (2,4)]zip ('foo', 'bar') 变成 [('f', 'b'), ('o', 'a'), ('o', 'r')]。最后一个结果对您的问题非常有用——现在您只需要通过一个函数运行一个函数遍历每个元组(即 (x,y) 形式的值)以检查这些值是否是平等的。您可以像在其他语言中一样在循环中执行此操作,但您也可以让 Python 为您执行循环并仅提供一个函数,该函数通过使用诸如 之类的函数返回对列表中的每个元组应用相等性的结果filter()map()。在您的情况下,您需要 filter() 遍历输入列表并包括原始列表中导致传入函数值的每个值(lambda解决方案)为 True。 “过滤”列表的长度实质上是匹配项的数量。

希望这对您有所帮助。请注意,如果您是 Python 新手,您将需要在一本好书或 official Python reference 中查找列表/序列、元组、zip、过滤器和 lambda 以完全理解解决方案。

哦,欢迎编程:-)

关于python - 遍历两个字符串,当相同索引处的字符匹配时返回计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24226451/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com