我有一个嵌套的列表,我希望通过在另一个嵌套列表(相同结构)中指定的给定次数重复每个元素来转换.
例:
phrases = [ ['Happy birthday to you','Happy birthday dear Einstein'],
['Happy birthday to you']
]
reps = [ [2, 1],
[1]
]
#------- Desired output looks like: -------------------------------------------
out = [ ['Happy birthday to you','Happy birthday to you','Happy birthday dear Einstein'],
['Happy birthday to you']
]
通过列表理解使用嵌套循环,我尝试过:
[ [phrases[i][j] for rep in range(reps[i][j])]
for i in range(len(phrases))
for j in range(len(phrases[i])) ]
#Returns:
#[['Happy birthday to you', 'Happy birthday to you'],
# ['Happy birthday dear Einstein'],
# ['Happy birthday to you']]
这不是我想要的.
最佳答案 您可以将
numpy.repeat
与zip结合使用:
import numpy as np
res = [np.repeat(i, j).tolist() for i, j in zip(phrases, reps)]
# [['Happy birthday to you',
# 'Happy birthday to you',
# 'Happy birthday dear Einstein'],
# ['Happy birthday to you']]