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

Python中如何通过一行语句结合for循环结果使用+=操作

Python中批量执行累加操作的正确实现

你遇到的语法错误原因很明确:Python的列表推导式要求内部是表达式(能返回值的代码片段),而page += item.func()是赋值语句(用来修改变量,没有返回值),所以不能放在列表推导式里。

下面给几种可行的实现方式:

1. 保留原循环写法(推荐)

原代码本身可读性极强,完全没必要强行改成“简洁”写法,Python官方也优先推荐易读的代码:

for item in items:
    page += item.func()

2. 用functools.reduce实现紧凑写法

如果确实需要更紧凑的代码,可以用reduce来累加,适用于数值、字符串等所有支持+操作的类型:

from functools import reduce

page = reduce(lambda acc, item: acc + item.func(), items, page)

这里reduce会以初始值page为起点,依次把每个item.func()的结果累加到acc上,最后返回更新后的page。

3. 字符串拼接专用优化写法

如果page是字符串,item.func()返回的也是字符串,用str.join()的效率远高于循环累加:

page += ''.join(item.func() for item in items)

生成器表达式(item.func() for item in items)会逐个生成字符串片段,join一次性完成拼接,避免了循环中多次字符串拷贝的性能损耗。

注意:列表推导式的设计目的是生成新列表,不是用来执行修改外部变量这类“副作用”操作,强行用推导式做赋值既不符合语法,也会降低代码可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:52:01