能否在Python的list.append()中嵌入for循环?代码优化需求
在list.append()中嵌入for循环的实现方案
当然可以实现,你需要的是用列表推导式来替代手动逐个添加元素的操作,直接在append()的参数里生成目标子列表。
原代码示例(模拟你的手动实现)
Imported_Variables = [] # 遍历从第3行开始的所有行 for row in ExcelSheet_IO.iter_rows(min_row=3): # 检查首列值不为空 if row[0].value is not None: # 手动添加0到18列的value Imported_Variables.append([ row[0].value, row[1].value, # ... 省略到row[18].value的重复代码 ])
优化后的代码(用列表推导式嵌入循环)
Imported_Variables = [] for row in ExcelSheet_IO.iter_rows(min_row=3): if row[0].value is not None: # 用for循环遍历前19个单元格(索引0-18),生成value列表 Imported_Variables.append([cell.value for cell in row[:19]])
进一步简化:合并外层循环与列表推导式
如果想更精简,可以把整个逻辑用一层嵌套列表推导式实现,完全省略append()的显式调用:
Imported_Variables = [ [cell.value for cell in row[:19]] for row in ExcelSheet_IO.iter_rows(min_row=3) if row[0].value is not None ]
注意事项
- 如果你的Excel库返回的行对象不支持切片(比如部分旧版库),可以改用索引遍历:
Imported_Variables.append([row[i].value for i in range(19)]) - 若需要处理单元格值为
None的场景(比如替换为空字符串),可以修改推导式:[cell.value if cell.value is not None else "" for cell in row[:19]]
内容的提问来源于stack exchange,提问作者Dennis Roest
相关产品推荐
相关产品推荐

