嵌套列表按索引求和问题:我的Python列表推导式为何失效?
问题分析与解决
你的数据集是一个列表(变量名testdic容易误导,其实它不是字典),结构是每个元素为包含两个子元素的列表,第二个子元素是数值列表。
你的代码问题
- 嵌套循环逻辑错误:你写的嵌套列表推导式完全没必要。外层循环
for i in testdic取出的是每个子列表(比如['HG00096', [15, 1, 0]]),内层循环for x in i会遍历这个子列表的两个元素——字符串'HG00096'和数值列表[15,1,0]。 - 索引错误触发点:当
x是字符串时,x[1][0]会报错:x[1]取的是字符串的第二个字符(比如'HG00096'的x[1]是'G'),单个字符没有[0]索引,直接引发TypeError或IndexError。 - 冗余的sum嵌套:你试图在列表推导式里嵌套sum,这会导致对每个子列表的元素单独求和,完全偏离了你要计算所有目标值总和的需求。
正确写法
直接遍历每个子列表,提取目标数值后求和即可,两种写法都可行:
方法1:生成器表达式(更高效)
testdic = [['HG00096', [15, 1, 0]], ['HG00097', [33, 0, 0]], ['NA21127', [24, 1, 0]]] total = sum(item[1][0] for item in testdic) print(total) # 输出72
方法2:列表推导式先收集再求和
total = sum([item[1][0] for item in testdic])
内容的提问来源于stack exchange,提问作者JakqloBrava
相关产品推荐
相关产品推荐

