将列表中的字符串乘以另一个列表中的数字(Python)

时间:2014-05-12 14:41:12

标签: python list

我有什么:

names = ["Bob", "Dora", "Kelly"]
numbers = [5, 3, 2]

我需要什么:

list1 = ["Bob", "Bob", "Bob", "Bob", "Bob", "Dora", "Dora", "Dora", "Kelly", "Kelly"]

这样他们的名字会被我的号码列表所示的次数附加到新列表中。

1 个答案:

答案 0 :(得分:5)

使用zip()和列表理解:

[name for name, count in zip(names, numbers) for _ in range(count)]

zip()将每个名称与每个数字配对,列表推导使用一组嵌套的for循环来重复name正确的次数。

演示:

>>> names = ["Bob", "Dora", "Kelly"]
>>> numbers = [5, 3, 2]
>>> [name for name, count in zip(names, numbers) for _ in range(count)]
['Bob', 'Bob', 'Bob', 'Bob', 'Bob', 'Dora', 'Dora', 'Dora', 'Kelly', 'Kelly']