python - 在列表中创建重复项

标签 python list

我有

 list = [a, b, c, d]

numbers = [2, 4, 3, 1]

我想获取以下类型的列表:

new_list = [a, a, b, b, b, b, c, c, c, d]

这是我目前所拥有的:

new_list=[] 
for i in numbers: 
    for x in list: 
        for i in range(1,i+1): 
            new_list.append(x)

最佳答案

这是使用 zip、字符串乘法和 列表理解 实现此目的的一种方法:

lst = ['a', 'b', 'c', 'd'] 
numbers = [2 , 4, 3, 1]

r = [x for i, j in zip(lst, numbers) for x in i*j]
print(r)
# ['a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'd']

使用Python时要注意名字的选择。像 list 这样的名称会导致内置列表函数不可用。

如果 lst 中的项目不是字符串,您可以简单地在 range 上使用嵌套理解,以复制列表中的项目。

关于python - 在列表中创建重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41811099/

相关文章:

python - 如何使 dockerized Flask 应用程序将输出写入文件?

c - 全局指针(链表头)未正确更新

python - 查找并检查列表中的项目

python - 如何在日出前2小时开始进程并在日落前1小时停止?

python - python计算不同数据帧中两个列表之间的匹配

java - 列表<?扩展我的类型>

list - Prolog - 替换列表元素

python - Google App Engine : ImportError: No module named _md5 的 Go 教程

python - 如何简化MySQLdb connect被多次调用

python - scipy ndimage.rotate 不适用于 np.nan 值