Python:组合列表迭代

时间:2018-05-05 10:20:18

标签: python list iteration

我有两个名单:

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"]

同义词和短语的长度都是可变的。

4 个答案:

答案 0 :(得分:1)

使用zip配对,replace替换:

>>> 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