如何根据原列表元素值将元素重复对应次数生成目标列表
列表元素按自身数值重复的实现方案
注意不要用list作为变量名,会覆盖Python内置的list类型,后续调用列表相关功能会触发异常,建议改为original_list这类自定义名称。
原代码问题说明
你写的代码只有单次if判断逻辑,只会执行1次,既没有遍历原列表的所有元素,也没有针对单个元素实现重复对应次数的逻辑,所以无法得到正确结果。
正确实现方式
1. 列表推导式(最简洁写法)
original_list = [3,4,1] desired_list = [num for num in original_list for _ in range(num)] print(desired_list)
运行后直接输出[3, 3, 3, 4, 4, 4, 4, 1],完全符合需求。
2. 两层for循环(基础易读写法)
如果对列表推导式不熟悉,可以用两层for循环实现,逻辑更直观:
original_list = [3,4,1] desired_list = [] for num in original_list: # 每个元素重复num次,依次追加到结果列表 for _ in range(num): desired_list.append(num) print(desired_list)
3. 列表乘法拼接写法
利用Python的列表乘法特性,直接拼接每个元素重复后的子列表:
original_list = [3,4,1] desired_list = [] for num in original_list: desired_list += [num] * num print(desired_list)
内容的提问来源于stack exchange,提问作者GDog
相关产品推荐
相关产品推荐

