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

Python带条件嵌套列表推导式:生成非嵌套列表的方法

问题:将列表中字符串替换为字符ASCII值并避免嵌套列表

在Python 3.7.9中解析包含整数和字符串的列表,需将每个字符串替换为其字符的ASCII值。示例:

  • 输入:operand = [200, 42, 0, 'A', 'BC']
  • 期望输出:operand = [200, 42, 0, 65, 66, 67]

当前使用的嵌套列表推导式:

operand = [[ord(char) for char in data] if type(data) is str else data for data in operand]

但生成了包含整数和嵌套列表的混合列表(如[200, 42, 0, [65], [66, 67]]),希望避免后续扁平化操作,如何用嵌套列表推导式直接生成正确的扁平列表?

解决方案

可以调整列表推导式的层级结构,将字符串的字符直接展开到结果列表中,同时统一处理整数和字符串的遍历逻辑:

operand = [ord(char) for data in operand for char in (data if isinstance(data, str) else [data])]

关键说明:

  • 对于每个元素data:若为字符串,则遍历其每个字符;若为整数,则将其包装成单元素列表,让内层循环仅迭代一次
  • 内层循环处理后直接输出单个值(整数或字符的ASCII码),最终生成的是完全扁平的列表,无需后续扁平化操作
  • 建议用isinstance(data, str)替代type(data) is str,前者支持子类类型检查,更符合Python的类型判断规范

测试该代码,输入目标列表后会直接得到期望的扁平结果,完全满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 18:19:55