我有什么:
names = ["Bob", "Dora", "Kelly"]
numbers = [5, 3, 2]
我需要什么:
list1 = ["Bob", "Bob", "Bob", "Bob", "Bob", "Dora", "Dora", "Dora", "Kelly", "Kelly"]
这样他们的名字会被我的号码列表所示的次数附加到新列表中。
答案 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']