You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python列表推导式读取文件并生成嵌套列表?

如何用列表推导式读取空行分隔的文件生成嵌套列表

问题场景

输入文件内容格式如下:

10
20
30

50
60
70

80
90
100

需要生成嵌套列表格式的输出:

[['10', '20', '30'], ['50','60','70'], ['80','90','100']]

要求仅使用列表推导式实现,不能使用显式的for循环语句,当前难点是识别空行来创建嵌套结构。

错误尝试分析

你之前的代码仅过滤了空行并将所有非空行放入一维列表,没有按空行分组,因此得到错误的一维输出:

with open('file.txt', 'r') as f:
    result = [line.strip() for line in f.readlines() if line != '\n']

print(result)
# 输出: ['10', '20', '30', '50', '60', '70', '80', '90', '100']

解决方案

通过两层列表推导式实现分组,核心是先按空行分割文件内容为块,再处理每个块内的行:

with open('file.txt', 'r') as f:
    result = [[line.strip() for line in block.splitlines() if line.strip()] 
              for block in f.read().split('\n\n') 
              if block.strip()]

print(result)
# 输出: [['10', '20', '30'], ['50', '60', '70'], ['80', '90', '100']]

代码解释

  1. 读取并分割块:f.read()读取整个文件内容,split('\n\n')将内容按连续两个换行符(空行)分割成多个组块,每个组块对应一组数字。
  2. 过滤无效块:if block.strip()过滤掉文件首尾可能存在的空块,避免生成空的子列表。
  3. 处理组块内的行:内层列表推导式对每个组块用splitlines()拆分为单独行,line.strip()去除每行的换行符和空格,同时if line.strip()过滤掉组块内可能存在的空行。

内容的提问来源于stack exchange,提问作者George Katsanos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 13:25:24