Python:合并列表迭代优化及函数化改造需求问询
优雅实现同义词短语组合生成函数
我懂你想要的是一个可复用、更简洁的函数,来把每个短语里的目标词替换成所有同义词,生成所有可能的组合列表。这里有个非常优雅的方案,用Python的列表推导式就能搞定,完全满足你把两个列表作为函数入参的需求:
实现代码
def generate_synonym_phrases(synonyms, phrases, target_word='verb'): # 双重列表推导式:遍历每个短语,再遍历每个同义词做替换 return [phrase.replace(target_word, syn) for phrase in phrases for syn in synonyms]
用法示例
用你给出的测试数据来验证:
synonymes = ['verb1', 'verb2', 'verb3'] phrases = ['blabla verb blabla', 'blibli verb blibli', 'verb bloblo bloblo'] # 调用函数生成结果 liste = generate_synonym_phrases(synonymes, phrases) print(liste)
运行后会输出你期望的列表:
['blabla verb1 blabla', 'blabla verb2 blabla', 'blabla verb3 blabla', 'blibli verb1 blibli', 'blibli verb2 blibli', 'blibli verb3 blibli', 'verb1 bloblo bloblo', 'verb2 bloblo bloblo', 'verb3 bloblo bloblo']
额外说明
- 这个函数还做了扩展:默认替换词是'verb',如果你的目标词不同,可以通过第三个参数
target_word传入,比如generate_synonym_phrases(syns, phrases, target_word='action') - 如果需要更复杂的替换(比如匹配整个单词、不区分大小写),可以把
replace换成re.sub,比如re.sub(r'\b' + target_word + r'\b', syn, phrase),记得先导入re模块。
内容的提问来源于stack exchange,提问作者Benjamin BB
相关产品推荐
相关产品推荐

