我在堆栈上寻找答案,但我找不到合适的答案。
我有两个清单:
keys = ['banana', 'orange']
values = [3, 5]
我想制作一个新的列表:
newlist = ['banana', 'banana', 'banana', 'orange',
'orange', 'orange', 'orange', 'orange']
答案 0 :(得分:0)
您可以使用zip
来迭代(value, key)
对。
out = []
for e in zip(values, keys):
out.extend(e[0] * [e[1]])
,没有for循环也是可能的
[y for x in zip(values, keys) for y in x[0] * [x[1]]]
答案 1 :(得分:0)
使用lambda可以轻松地将它们相乘。你的lambda将接受两个参数,每个数组一个并返回乘法:
newlist = list(map(lambda x, y: [x] * y, keys, values))
我们需要将来自x
的值(values
)括在方括号中的lambda
中,以便不会得到字符串乘法而是。
这导致:
[['banana', 'banana', 'banana'],
['orange', 'orange', 'orange', 'orange', 'orange']]