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

如何用列表推导式移除Python列表中含连字符/下划线的纯数字元素

移除列表中含连字符的纯数字类元素

原始列表

synonyms = ["3,2'-DIHYDROXYCHALCONE", '36574-83-1', '36574831', "2',3-Dihydroxychalcone",  '(E)-1-(2-hydroxyphenyl)-3-(3-hydroxyphenyl)prop-2-en-1-one', 'MLS002693861']

需求

需要移除列表中所有仅由数字构成的元素,包括像'36574-83-1'这种中间带有连字符的元素。

遇到的问题

  • 使用[x for x in synonym_subset if not (x.isdigit())]无法过滤带连字符的数字元素,因为连字符的存在导致isdigit()返回False
  • 直接对所有元素执行x.replace('-','')会破坏其他有效元素中的连字符,不可取

一行列表推导式解决方案

filtered_synonyms = [x for x in synonyms if not (isinstance(x, str) and x.replace('-', '').isdigit())]

原理说明

  • 先判断元素是否为字符串类型,避免非字符串元素触发报错
  • 对字符串元素移除所有连字符后,检查剩余内容是否全为数字
  • 仅保留不满足上述条件的元素,既过滤掉纯数字、带连字符的纯数字类元素,又不会损坏其他含连字符的有效元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 03:52:15