如何使用另外两个列表中的值填充新列表

时间:2016-10-31 11:57:18

标签: list python-3.x fill

我在堆栈上寻找答案,但我找不到合适的答案。

我有两个清单:

keys = ['banana', 'orange']
values = [3, 5]

我想制作一个新的列表:

newlist = ['banana', 'banana', 'banana', 'orange',
    'orange', 'orange', 'orange', 'orange']

2 个答案:

答案 0 :(得分:0)

您可以使用zip来迭代(value, key)对。

out = []
for e in zip(values, keys):
    out.extend(e[0] * [e[1]])

使用nested list comprehensions

,没有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']]