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

如何优雅地将函数返回的列表元组解包并追加至两个列表?

嘿,这个需求我之前也碰到过,Python里确实有几个挺优雅的写法,完全不用临时变量,还能保证函数只调用一次(避免重复执行带来的副作用)!

优雅的无临时变量实现方案

方法1:元组方法调用 + 解包(一行搞定)

这是最简洁的写法,利用Python的可调用对象特性和解包语法,一行就能完成:

# 假设你的函数叫get_two_lists,已有目标列表是target1和target2
(target1.extend, target2.extend)(*get_two_lists())

小解释:

  • (target1.extend, target2.extend) 先创建一个包含两个列表扩展方法的元组
  • *get_two_lists() 把函数返回的两个列表解包成两个独立参数
  • 元组后面加()会依次调用每个方法,分别传入对应的列表参数,完美实现分别追加的效果

方法2:zip遍历(可读性更强)

如果觉得上面的写法有点“黑魔法”,可以用更直观的遍历方式,同样没有临时变量,还更容易理解:

for append_func, new_items in zip((target1.extend, target2.extend), get_two_lists()):
    append_func(new_items)

小解释:

  • 用zip把两个扩展方法和函数返回的两个列表一一配对
  • 遍历配对后的每一组元素,依次调用方法把新列表追加到目标列表里
  • 这种写法更直白,团队协作时同事一眼就能看懂逻辑

避坑提醒:别重复调用函数

比如这种写法虽然看起来简单,但要尽量避免:

target1.extend(get_two_lists()[0])
target2.extend(get_two_lists()[1])

因为函数会被执行两次,如果你的函数有IO操作、复杂计算或者其他副作用,就会导致不必要的重复执行,上面两种方法都只调用一次函数,更可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:48:15