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

Python如何对元组内任意数量列表的对应元素求和与拼接

实现方案

错误原因说明

  • 用zip(*tuples)的写法只能处理元组内固定2个子列表的场景,子列表数量不固定时,zip解包后的元素数量和接收变量数不匹配就会触发值错误,无法适配动态长度的元组。
  • 调用sum时出现TypeError: 'list' object is not callable,是因为之前代码中把sum作为变量名赋值了列表类型的值,覆盖了Python内置的sum()函数,把同名自定义变量改成其他名称(比如total、num_sum)即可修复。切记不要使用Python内置函数名(比如sum、list、dict等)作为自定义变量名,否则会覆盖内置函数的引用,触发各类调用错误。

适配任意子列表数量的代码

普通循环写法(逻辑直观易调试)

不需要依赖zip做固定长度解包,遍历每个元组时初始化聚合初始值,逐个子列表累加拼接即可,天然支持元组内任意数量的子列表:

lst = [(['a', 1], ['b', 2]), (['c', 3], ['d', 4], ['e', 5])]
res = []
for t in lst:
    s_concat = ""
    n_sum = 0
    for sub in t:
        s_concat += sub[0]
        n_sum += sub[1]
    res.append([s_concat, n_sum])

# 输出结果
for item in res:
    print(item)

简洁推导式写法

用生成器表达式分别做字符串拼接和数值求和,代码更短:

lst = [(['a', 1], ['b', 2]), (['c', 3], ['d', 4], ['e', 5])]
res = [[''.join(s[0] for s in t), sum(s[1] for s in t)] for t in lst]

# 输出结果
for item in res:
    print(item)

两段代码运行后都会输出预期结果:

['ab', 3]
['cde', 12]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:39:29