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

Python中有没有更优雅的语法可以从一个父列表生成两个子列表?

你尝试写的那种单列表推导同时返回两个字段的写法在Python中是不合法的,列表推导式每次迭代只能返回单个元素,你这么写会直接抛出语法错误。

有两种更简洁且只需要遍历一次原列表的实现方案,比你现在写两次列表推导的性能还要更好:

  • 用zip()配合生成器表达式实现
    如果接受最终结果为元组类型,写法如下:
    ids, addresses = zip(*((item["id"], item["address"]) for item in list1))
    
    如果需要保持列表类型,只要在外层加一层类型转换即可:
    ids, addresses = map(list, zip(*((item["id"], item["address"]) for item in list1)))
    
  • 多字段提取通用写法
    如果你需要提取的字段数量较多,可以先声明要提取的key列表,再批量处理,后续新增字段只要修改keys列表就行:
    extract_keys = ["id", "address"]
    ids, addresses = map(list, zip(*(map(item.get, extract_keys) for item in list1)))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:36:00