这是针对 Python 3 的。我有两个列表:
lista = ['foo', 'bar']
listb = [2, 3]
我想得到:
newlist = ['foo', 'foo', 'bar', 'bar', 'bar']
但是我卡住了。如果我尝试:
new_list = []
for i in zip(lista, listb):
new_list.append([i[0]] * i[1])
我得到:
[['foo', 'foo'], ['bar', 'bar', 'bar']]
我知道这行得通,但我并不总是知道每个列表的内容。
new_list = ['foo'] * 2 + ['bar'] * 3
提前致谢!
请您参考如下方法:
您可以将列表理解与以下一个衬里一起使用:
new_list = [x for n,x in zip(listb,lista) for _ in range(n)]
代码的工作原理如下:首先我们生成一个 zip(listb,lista),它生成 (2,'foo'), (3,'bar'), 的元组。 .. 现在,对于这些元组中的每一个,我们都有第二个 for 循环,该循环迭代 n 次(for _ in range(n)),因此我们多次将 x 添加到列表中。
_是一个变量,通常用来表示_携带的值并不重要:它只是因为我们需要在for循环中使用一个变量强制迭代。
