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

Python列表推导式嵌套条件:1-30奇数及5的倍数标记实现

如何用列表推导式实现1-30奇数的特殊标记输出?

我是Python新手,正在学习列表推导式。现需编写代码,输出1到30(包含首尾)的所有奇数,其中5的倍数需标记为“数字x”格式,示例输出为:

[1, 3, '5x', 7, 9, 11, 13, '15x', 17, 19, 21, 23, '25x', 27, 29]

我已用普通for循环加条件判断实现该功能,但写法有点冗余(代码如下):

odds = []

for i in list(range(1,30+1)):
  if i%2 !=0:
    odds.append(i)
    if i%5 == 0:
      odds.append(f'{i}x')
      odds.remove(i)

print(odds)

尝试用列表推导式实现时失败了,希望得到正确的写法指导。


优化后的循环写法

先给你优化一下原来的循环逻辑,不用先添加再删除元素,直接根据条件判断要添加的内容:

odds = []
for i in range(1, 31):
    if i % 2 != 0:
        odds.append(f"{i}x" if i % 5 == 0 else i)
print(odds)

对应的列表推导式写法

列表推导式本质就是把循环和条件判断浓缩到一行,这里核心是用三元表达式处理每个奇数的输出形式:

odds = [f"{i}x" if i % 5 == 0 else i for i in range(1, 31) if i % 2 != 0]
print(odds)

推导式结构拆解

  • for i in range(1, 31):遍历1到30的所有整数
  • if i % 2 != 0:过滤出奇数,只处理符合条件的数字
  • f"{i}x" if i % 5 == 0 else i:对每个奇数做二次判断,是5的倍数就生成带x的字符串,否则保留原数字

运行这段代码就能得到你想要的示例输出,逻辑清晰且符合列表推导式的简洁特性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:55:21