Python如何按计数展开嵌套列表?两种错误写法求修正
代码错误原因及修正方案
原有写法1的问题
- 给Counter传参时
vName=count是将键名固定为字符串vName,没有读取你定义的vName变量的实际值,语法逻辑错误 - 你用了
append方法,会把每次生成的小列表作为元素塞进结果,最终得到嵌套列表,不符合扁平输出的要求,应该用extend方法
修正后的写法1:
from collections import Counter rows = [['AA','1'] ,['BB','4'] ,['CC','3']] variableName = [] for row in rows: vName = row[0] count = int(row[1]) # 用字典解包动态传入键值对 result = Counter(**{vName: count}) # extend把元素逐个追加到结果列表 variableName.extend(list(result.elements()))
原有写法2的问题
- 循环条件
count < countRW中的countRW是未定义变量,逻辑完全不成立,直接循环count次即可
修正后的写法2:
rows = [['AA','1'] ,['BB','4'] ,['CC','3']] variableName = [] for row in rows: vName = row[0] count = int(row[1]) # 直接循环count次追加元素 for _ in range(count): variableName.append(vName)
更简洁的一行写法(可选)
rows = [['AA','1'] ,['BB','4'] ,['CC','3']] variableName = [row[0] for row in rows for _ in range(int(row[1]))]
以上所有写法运行后都能得到目标结果:['AA','BB','BB','BB','BB','CC','CC','CC']
内容的提问来源于stack exchange,提问作者Momo
相关产品推荐
相关产品推荐

