我想编写Python代码,使用“letter”列表从“word”中搜索匹配项。 我创建了以下两个列表-单词和字母:
word = ['hello', 'how', 'are', 'you', 'potato']
letter = ['how', 'ell', 'aaa', 'bbb', 'tat', 're']
我想要得到的是以下输出作为一个列表,以及“word”和“letter”列表之间的映射结果。 如果匹配了完整的字符串,结果将返回“True”。 如果部分字符串匹配,结果将返回“True”。 如果字符串的nil部分匹配,结果将返回“False”。你知道吗
word_result = ['True', 'True', 'True', 'False', 'True']
我试着自己使用for loop/if…else/import re,但是没有得到我想要的结果。你知道吗
有人能帮忙吗?你知道吗
非常感谢!你知道吗
我使用以下代码进行了测试,但不起作用:
word = ['hello', 'how', 'are', 'you', 'potato']
letters = ['ell', 'how', 'aaa', 'bbb', 'tat', 're']
def check_match():
for l in letters:
if l in word:
print(l)
print(check_match())
预期结果:
word_result = ['True', 'True', 'True', 'False', 'True']
我不确定你的预期产出是否正确。 下面是应该有效的代码:
输出:
编辑: 现在我明白你的问题了。。。首先,您将看到不同的输入:
然后使用不同的:
第二,你要检查来自
word
的单词是否有来自letters
的相应字母。您只需切换循环:输出:
您对部分匹配没有精确的定义,因此很难完整地回答您的问题。你知道吗
然而,我们可以将这一(缺失的)智慧限制在一个函数中:
其余逻辑可以通过嵌套循环轻松编写:
循环的内部部分是编程中常见的设计模式,Python使用
any()
原语并重写内部循环作为理解提供了一种快捷方式:或者更紧凑,重写两个循环就是理解:
现在让我们关注
partial_match()
,如果您只想确保letter
包含在word
中,例如:partial_match('how', 'ow') == True
partial_match('how', 'ho') == True
partial_match('how', 'o') == True
partial_match('how', 'oww') == False
partial_match('how', 'wow') == False
partial_match('how', 'hoe') == False
partial_match('how', 'xxx') == False
然后您可以简单地使用:
注意到精确匹配(由
word == letter
描述)也会满足partial_match()
的要求,最后@U10 Forward的答案是省略==
检查、内联partial_match()
和几个重命名。你知道吗如果您的
partial_match()
应该是不同的,那么以上所有内容仍然有效,您只需要优化该函数。你知道吗将列表理解与
any
一起使用:输出:
相关问题 更多 >
编程相关推荐