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

如何使用含iterable unpacking的list comprehension优化成对字符串解析?

一行列表推导式处理空格分隔的逗号键值对

需求场景

给定单行输入内容为空格分隔的逗号键值对(示例如下),需要将其转换为字符串元组的列表:

805i,9430 3261i,9418 3950i,9415 4581i,4584i 4729i,9421 6785i,9433 8632i,9434 9391i,9393i

原实现通过两次循环完成,但希望用一行列表推导式实现,且避免重复调用split方法。

解决方案

可以结合列表推导式与可迭代解包实现,有两种简洁写法:

  1. 直接将分割结果转为元组:
bss = [tuple(pair.split(',')) for pair in line.strip().split()]
  1. 显式解包键值对:
bss = [(x, y) for x, y in (pair.split(',') for pair in line.strip().split())]

说明

  • 内层的生成器表达式(pair.split(',') for pair in line.strip().split())会逐个处理空格分割后的每个元素,每个元素仅调用一次split(',')完成分割;
  • 第一种写法利用tuple()直接将分割后的列表转为元组,代码更简洁;
  • 第二种写法通过显式解包x, y,逻辑更直观,适合需要明确处理两个值的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:18:08