如何通过与给定的字符串列表相乘来使列表中的元素重复显示

how to make elements in a list being displayed repeteviely by multiplying with a given list of strings

我有以下列表:

List_1 = ['Banana', 'Apple', 'Pear']
List_2 = [3, 2, 4]

我想创建一个显示 3 个香蕉、2 个苹果和 4 个梨的新列表。 该列表应如下所示。

List_3 = ['Banana','Banana','Banana', 'Apple','Apple', 'Pear', 'Pear', 'Pear', 'Pear']

你有什么想法吗?怎么做?提前致谢!

List_1 = ["Banana", "Apple", "Pear"]
List_2 = [3, 2, 4]

out = [i for i, m in zip(List_1, List_2) for _ in range(m)]
print(out)

打印:

['Banana', 'Banana', 'Banana', 'Apple', 'Apple', 'Pear', 'Pear', 'Pear', 'Pear']

您可以使用 zip 迭代两个列表,并在每次迭代时扩展一个空列表,如下所示:

result = []

for item, multiplier in zip(List_1,List_2):
    result.extend([item]*multiplier)
    
print(result)

['Banana', 'Banana', 'Banana', 'Apple', 'Apple', 'Pear', 'Pear', 'Pear', 'Pear']
L1 = ['Banana', 'Apple', 'Pear'] 
L2 = [3, 2, 4]

L=[]
for i in range(3):
    L += [L1[i]]*L2[i]

print(L)
# ['Banana', 'Banana', 'Banana', 'Apple', 'Apple', 'Pear', 'Pear', 'Pear', 'Pear']

这里提到的所有使用 zip 的方法都很好。这是一个使用 itertools 的方法,如果你想使用:

from itertools import chain, repeat

list(chain.from_iterable(map(repeat, List_1, List_2)))

我还是新手,但想到了这个方法:从你的两个列表创建一个字典,然后用它来生成一个满足你需要的新列表:

List_1 = ['Banana', 'Apple', 'Pear']
List_2 = [3, 2, 4]
list_3 = []

InterimDict= dict(zip(List_1, List_2))

for key in InterimDict:
    for value in InterimDict:
        list_3.append(key)