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

寻求可修改元素并返回新列表的单行Python表达式

解决单行修改列表元素并返回新列表的问题

方案1:切片+解包(简洁直观)

如果仅替换单个索引的元素,用列表切片加解包的方式最简洁,无需枚举:

# key=0; value=3; rng=[1,2]
[*rng[:key], value, *rng[key+1:]]

该写法会将原列表rng中key位置之前的元素、新值、key位置之后的元素重新拼接为新列表,完全匹配需求,代码比列表推导式更精简。

方案2:赋值表达式+语句分隔(与原函数逻辑完全等价)

要是想和你提供的replace函数逻辑完全一致(先复制原列表,再修改指定索引),可以借助Python赋值表达式(:=)加语句分隔符;把逻辑压缩成单行:

# 等价于你的replace函数
(a := list(rng))[key] = value; a

这个写法先把原列表复制给变量a,修改a的指定索引后返回a,和原函数的执行步骤完全一致,可直接作为表达式使用。

针对PyTorch场景的优化

你给出的实际代码里用到了__setitem__的技巧,同样可以用赋值表达式逻辑简化:

kv_cache_write = (shape := list(kv_cache.shape))[-2] = x.shape[-1]; torch.zeros(shape)

该写法逻辑清晰,和列表修改的思路统一,比原代码可读性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:31:00