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

如何将获取有序唯一参数的循环代码改写为最简列表推导式?

按出现顺序提取唯一参数名的简洁实现

需求

从每行格式为parameter = something的字符串列表中,按首次出现顺序提取唯一的参数名(等号左侧的内容)。

原有可行循环代码

data = [
    'B = 3', 
    'T = 0', 
    'N = 5', 
    'V = 2', 
    'N = 1', 
    'V = 4',
    'B = 7', 
    'T = 2',
]

h = []
for d in data:
    el = d.split("=", 1)[0].strip()
    if el not in h:
        h.append(el)

# 输出结果:['B', 'T', 'N', 'V']

优化方案

方案1:用海象运算符简化列表推导式(Python 3.8+)

你之前的写法重复了分割和strip操作,用Python 3.8引入的海象运算符:=可以在推导式里先计算并赋值el,避免重复代码:

h = []
[h.append(el) for d in data if (el := d.split("=", 1)[0].strip()) not in h]

# 输出结果:['B', 'T', 'N', 'V']

方案2:一行式高效实现(Python 3.7+)

利用Python 3.7及以上版本字典默认保留插入顺序的特性,用dict.fromkeys()直接生成去重后的有序列表,效率比列表判断更高(字典的成员查找是O(1),列表是O(n)):

h = list(dict.fromkeys(d.split("=", 1)[0].strip() for d in data))

# 输出结果:['B', 'T', 'N', 'V']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 18:10:32