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

如何使用Python列表推导式单行重写for循环与条件判断逻辑

优化实现方案

你可以通过列表推导式把逐字符遍历、移位计算、边界判断、结果收集的逻辑全部压缩到单行实现,不需要提前初始化空列表再逐次append。

严格复刻原逻辑的实现

以下代码和你给出的原始代码逻辑、输出结果完全一致:

alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
            'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
var = 'hello'
coded_word = [alphabet[pos % 25 if pos > 24 else pos] for i in var for pos in [alphabet.index(i) + 3]]

运行后得到的coded_word和原代码输出完全相同,为['k', 'h', 'o', 'o', 'r']。

简化版实现

原代码中的边界判断存在冗余:对于小于25的非负整数,对25取模的结果等于数值本身,因此可以直接省略if判断,把代码进一步简化为可读性更高的版本:

coded_word = [alphabet[(alphabet.index(i) + 3) % 25] for i in var]

这个版本的运行结果和原代码没有任何差异。

逻辑对应关系

  • 推导式末尾的for i in var对应原代码的外层循环,逐一遍历明文中的每个字符
  • 推导式前部的位置计算逻辑,完全对应原代码中「取索引→加移位值→边界处理→取密文字符」的流程
  • 列表推导式会自动把所有计算得到的密文字符收集为列表,不需要手动调用append方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:24:21