Google文档脚本问题:如何打印嵌套列表中每个子列表的第二个元素
解决嵌套列表提取元素的问题
嘿,我懂你这种卡壳的感觉!咱们来看看问题出在哪——你不小心给列表多套了一层嵌套,导致取元素的时候绕了弯路。
问题根源
看你代码里的这行:
lst_b.append([cells.entry[i-30].cell.inputValue, cells.entry[i-29].cell.inputValue, cells.entry[i-25].cell.inputValue])
你把三个值打包成了一个新的列表,然后把这个列表append到lst_b里,结果lst_b就变成了[[值1, 值2, 值3]](一个装着列表的列表)。之后你把lst_b加到lst_a里,最终lst_a的结构就成了:
[[[值1, 值2, 值3]], [[值4, 值5, 值6]], ...]
这就是为什么你取lst_a[0]时,拿到的不是预期的三个值,而是又套了一层的嵌套结构。
两种解决办法
办法1:从源头避免多余嵌套
直接创建包含三个值的列表,不用再通过append多套一层:
lst_a = [] for i, cell in enumerate(cells.entry): if cell.title.text.startswith('AG') and cell.content.text == '2': # 直接生成包含三个目标值的列表 target_values = [ cells.entry[i-30].cell.inputValue, cells.entry[i-29].cell.inputValue, cells.entry[i-25].cell.inputValue ] lst_a.append(target_values) # 现在lst_a的结构是[[值1,值2,值3], [值4,值5,值6], ...] # 提取每个子列表的第二个元素(索引为1,因为Python从0开始计数) for values in lst_a: print(values[1])
办法2:处理已有的嵌套列表
如果不想修改原代码的逻辑,只想从现有的lst_a里提取目标元素,可以这样遍历:
# 遍历lst_a中的每一项 for nested_item in lst_a: # nested_item是[[值1,值2,值3]],先取出内部的列表 inner_list = nested_item[0] # 取第二个元素 print(inner_list[1]) # 或者用列表推导式一次性生成所有第二个元素的列表: all_second_elements = [item[0][1] for item in lst_a] print(all_second_elements)
小提示
别忘了Python的列表索引是从0开始的,所以“第二个元素”对应的索引是1,这点你应该已经清楚,但还是再提一下以防出错~
内容的提问来源于stack exchange,提问作者Harry Adkins
相关产品推荐
相关产品推荐

