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

Python中如何优雅将HTML表格转换得到的一维列表转为嵌套列表

问题场景

现有一段可提取指定HTML表格单元格数据生成一维列表的Python代码,实现如下:

import pandas as pd
import numpy as np

my_table = pd.read_html('<目标网页URL>')
df = my_table[0]
my_list = [int(v) for v in '-'.join(df['Position']).split('-')]
print(my_list)

代码可正常运行,执行后输出的一维列表内容为:

[1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 10, 11, 12, 13]

需要将上述一维列表转换为如下格式的嵌套列表:

[[1, 2, 3, 4],[4, 5, 6, 7],[7, 8, 9, 10],[10, 11, 12, 13]]
简洁实现方案

观察拆分规律:每4个元素为一组,相邻组共享首尾元素(前一组的最后一个元素是后一组的第一个元素),用Python原生的列表切片+列表推导式就能实现,不需要额外依赖,代码简洁易读:

# 已生成my_list的前提下执行
group_len = 4
step = group_len - 1
nested_list = [my_list[i:i+group_len] for i in range(0, len(my_list)-step, step)]

执行后打印nested_list就能得到目标格式的结果:

[[1, 2, 3, 4], [4, 5, 6, 7], [7, 8, 9, 10], [10, 11, 12, 13]]

方案说明

  • 核心逻辑是固定大小的滑动窗口切片:窗口长度设为4,每次滑动步长为3,刚好匹配相邻组共享首尾元素的拆分规则
  • 纯Python原生语法实现,没有额外依赖,执行效率高
  • 通用性好,如果后续需要调整每组的元素数量,只需要修改group_len的取值即可自动适配

如果你的代码流程中已经引入numpy做数据处理,也可以用numpy内置的滑动窗口API实现,代码更短:

import numpy as np
nested_list = np.lib.stride_tricks.sliding_window_view(my_list, 4)[::3].tolist()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:06:20