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

如何将列表分片赋值的多行循环代码改写为单行表达式?

单行表达式实现分片赋值

很简单,咱们可以利用zip()把目标位置的索引和x中的元素一一对应,然后用一行for循环完成赋值,代码如下:

for idx, val in zip(range(4 + lbp, 4 + ubp), x): h[idx] = val

思路拆解:

  • 原代码里t1遍历range(lbp, ubp),对应的目标索引是4 + t1,这个范围可以直接用range(4 + lbp, 4 + ubp)生成,逻辑完全一致
  • 用zip()把这个索引范围和x的元素两两配对,每一次循环都能精准拿到要赋值的位置和对应的值
  • 把多行循环压缩成一行,可读性和执行效率都和原代码保持一致

测试验证:

给定测试变量:

h = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
x = [20, 21]
lbp = 2
ubp = 4

执行单行代码后,h会变为[1, 2, 3, 4, 5, 6, 20, 21, 9, 10],和原多行循环的执行结果完全相同。

内容的提问来源于stack exchange,提问作者Cristian Ramon-Cortes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:01:57