我有两个名单:
synonymes = ['verb1', 'verb2', 'verb3']
phrases = ['blabla verb blabla', 'blibli verb blibli', 'verb bloblo bloblo']
我希望将它们组合起来以在另一个列表中获得此结果:
liste = ['blabla verb1 blabla','blabla verb2 blabla', ... 'verb3 bloblo bloblo']
以下代码有效,但它不是很优雅,我想将2个列表作为执行此项工作的函数的条目,这对于此解决方案是不可能的:
while j < len(synonymes):
liste.append("blabla "+synonymes[j]+" blabla")
liste.append("blibli "+synonymes[j]+" blibli")
liste.append(synonymes[j]+" bloblo bloblo")
j+=1
如果需要,我可以更改这两个列表的结构,只要我能获得这个最终列表
在python中这样做的正确方法是什么?
谢谢!
编辑:为了让自己更清楚,这是我想要的确切输出:
["blabla verb1 blabla", "blabla verb2 blabla", "blabla verb3 blabla", "blibli verb1 blabla", "blibli verb2 blibli", "blibli verb3 blibli", "verb1 bloblo bloblo", "verb2 bloblo bloblo", "verb3 bloblo bloblo"]
同义词和短语的长度都是可变的。
答案 0 :(得分:1)
>>> synonymes = ['verb1', 'verb2', 'verb3']
>>> phrases = ['blabla verb blabla', 'blibli verb blibli', 'verb bloblo bloblo']
>>> [y.replace('verb', x) for x, y in zip(synonymes, phrases)]
['blabla verb1 blabla', 'blibli verb2 blibli', 'verb3 bloblo bloblo']
编辑:
>>> [y.replace('verb', x) for y in phrases for x in synonymes]
['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']
答案 1 :(得分:0)
试试这个:
for i in enumerate(phrases):
phrases[i[0]] = phrases[i[0]].replace('verb', synonymes[i[0]])
或一行:
[phrases[i[0]].replace('verb', synonymes[i[0]]) for i in enumerate(phrases)]
答案 2 :(得分:0)
使用代码中使用的相同格式
liste = [phrase.format(verb=verb) for verb, phrase in zip(synonymes, phrases)]
但是要做到这一点,你必须改变这样的短语列表:
phrases = ['blabla {verb} blabla','blabla {verb} blabla', ... '{verb} bloblo bloblo']
答案 3 :(得分:0)
liste = phrases.copy() # create copy of phrases
# iterate phrases with index
for index, verb in enumerate(phrases):
liste[index] = verb.replace("verb", synonymes[index]) # replace verb with related verb element