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

Python实现忽略数字统计唯一值并生成类化学式输出

解决思路及代码实现

你之前用np.unique(lst)的问题在于,它只是对原列表里的元素去重,得到的是['A1','A2','B'],拼接后自然不是想要的化学式格式。要实现需求,得按以下步骤来:

  1. 提取每个元素的字母部分:把列表里每个元素的数字去掉,只保留字母,比如A1、A2都转成A。
  2. 统计每个字母的出现次数:数清楚A和B各出现多少次。
  3. 按化学式格式拼接结果:次数为1时只写字母,次数大于1时字母后面跟次数。

完整代码

from collections import Counter

lst = ['A1', 'A2', 'B', 'B', 'B', 'B']

# 提取每个元素的纯字母部分
cleaned_elements = [''.join([c for c in item if c.isalpha()]) for item in lst]

# 统计各字母出现次数
element_counts = Counter(cleaned_elements)

# 拼接成化学式格式
formula = ''
for elem, count in element_counts.items():
    formula += elem if count == 1 else f"{elem}{count}"

print(formula)  # 输出:AB4

代码说明

  • 列表推导式结合str.isalpha()过滤掉元素中的数字,得到纯字母列表['A','A','B','B','B','B']。
  • Counter工具可以快速统计每个字母的出现次数,这里得到Counter({'A':2, 'B':4})。
  • 最后遍历统计结果,按规则拼接成目标格式的字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:03:16