# 第 2-4 课完整示例:推导式与简化写法 # # 本示例先展示普通循环,再展示作用相同的推导式。 # 推导式适合简单的数据转换和筛选,不应为了缩短代码而堆叠复杂逻辑。 def get_enabled_agent_names(agents): """使用列表推导式返回所有已启用 Agent 的名称。""" return [agent["name"] for agent in agents if agent["enabled"]] def get_agent_tool_counts(agents): """使用字典推导式建立 Agent 名称与工具数量的对应关系。""" return { agent["name"]: len(agent.get("tools", [])) for agent in agents } def get_unique_tools(agents): """使用集合推导式收集不重复的工具名称。""" return { tool for agent in agents for tool in agent.get("tools", []) } def get_status_text(agent): """使用条件表达式返回简短的中文状态。""" return "启用" if agent["enabled"] else "停用" def main(): """准备 Agent 数据,并演示四种简化写法。""" agents = [ { "name": "代码助手", "enabled": True, "tools": ["搜索", "终端"], }, { "name": "聊天助手", "enabled": False, "tools": ["搜索"], }, { "name": "测试助手", "enabled": True, "tools": ["终端", "测试"], }, ] # 普通循环写法:先创建空列表,再逐条判断和添加。 names_from_loop = [] for agent in agents: if agent["enabled"]: names_from_loop.append(agent["name"]) # 列表推导式可以简洁表达同一个“遍历、筛选、保存”过程。 enabled_names = get_enabled_agent_names(agents) tool_counts = get_agent_tool_counts(agents) unique_tools = get_unique_tools(agents) print(f"普通循环结果:{names_from_loop}") print(f"列表推导式结果:{enabled_names}") print(f"工具数量字典:{tool_counts}") print(f"不重复工具:{sorted(unique_tools)}") print("Agent 状态:") for agent in agents: status_text = get_status_text(agent) print(f"- {agent['name']}:{status_text}") if __name__ == "__main__": main()