Python嵌套列表元素计数及按规则分配值问题
嵌套列表元素统计与值分配代码修正
需求说明
需统计嵌套列表中主列表各元素的实际元素数量(单个非列表元素计为1,子列表计为其内部元素总数),并据此为每个主元素分配对应值:子元素数>1时分配0.5,否则分配1。
原代码与问题
原代码
y = ['ab',['bc','cd'],'ef'] print([len(y[i]) for i in range(len(y))]) alpha=0.5 plot_alpha = [alpha for i in range(len(y)) if len(y[i])>1 else 0.5] print(plot_alpha)
当前输出
[2, 2, 2] [0.5, 0.5, 0.5]
期望输出
[1, 2, 1] [1, 0.5, 1]
修正方案
核心问题分析
原代码错误地将字符串的字符长度当作元素数量统计,且值分配的条件逻辑不符合需求。需先判断元素是否为列表,再分别处理统计规则与值分配规则。
修正后代码
y = ['ab',['bc','cd'],'ef'] # 统计每个主元素对应的实际元素数量 count_list = [len(item) if isinstance(item, list) else 1 for item in y] print(count_list) alpha = 0.5 # 根据元素类型分配对应值:子列表分配alpha,单个元素分配1 plot_alpha = [alpha if isinstance(item, list) else 1 for item in y] print(plot_alpha)
代码解释
- 元素数量统计:通过
isinstance(item, list)判断元素是否为子列表,是则取子列表的元素长度,否则记为1,得到符合需求的count_list。 - 值分配:同样通过类型判断,子列表分配
alpha(0.5),单个非列表元素分配1,生成期望的plot_alpha。
内容的提问来源于stack exchange,提问作者Mainland
相关产品推荐
相关产品推荐

