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

Python列表循环仅获最后一页API数据,如何收集全部分页数据?

解决API分页数据收集不全的问题

你遇到的核心问题是列表被重复初始化或错误赋值,导致之前分页请求的数据被覆盖,最终只保留最后一页的结果。而print能输出所有内容,是因为每次请求后直接打印,没有被后续操作覆盖。

常见错误原因

  1. 列表在分页循环内部初始化:比如每次分页请求都重新创建列表,之前的数据被清空
  2. 用赋值操作(=)替代追加:比如nomes = response['nome']直接覆盖列表,而不是用append/extend添加元素

正确实现方式

把存储结果的列表定义在循环外部,并使用正确的追加方法收集每一页的数据。以下是示例代码:

def unidades(projeto_id):
    # 列表初始化在分页循环之前,整个函数执行期间只创建一次
    nomes = []
    for start in range(4):
        # 替换为你的真实API请求逻辑,比如:
        # import requests
        # response = requests.get(f"你的API地址?projeto_id={projeto_id}&start={start}")
        # page_data = response.json()
        # page_nomes = [item['nome'] for item in page_data['data']]
        
        # 模拟API返回的单页nome列表
        page_nomes = [f"unidade_{projeto_id}_{start}_1", f"unidade_{projeto_id}_{start}_2"]
        
        # 用extend批量添加整页元素,或用append逐个添加
        nomes.extend(page_nomes)
        # 若单个元素追加:
        # for nome in page_nomes:
        #     nomes.append(nome)
    return nomes

# 遍历项目ID并收集所有数据
projetos = [254, 255, 256]
todas_unidades = []
for pid in projetos:
    unidades_do_projeto = unidades(pid)
    todas_unidades.extend(unidades_do_projeto)

print(todas_unidades)

关键要点

  • 列表初始化时机:确保存储结果的列表只在需要持续追加数据的循环外部初始化一次
  • 追加方法区分:
    • extend():用于将另一个列表的所有元素添加到当前列表(适合API返回多元素列表的场景)
    • append():用于添加单个元素(适合遍历API返回的每个元素逐个添加)
  • 避免赋值覆盖:不要直接用=给列表重新赋值,这会丢弃之前存储的所有数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 17:25:22