如何用Python对物理单位列表分组并简化(合并同类单位指数)
测量单位简化的Python实现
需求:将给定的测量单位列表按相同单位分组,累加对应指数,剔除指数总和为0的单位,得到简化后的结果。
实现代码
my_list = [['N'], ['m', '-24'], ['km', '-1'], ['s', '-1'], ['m', '2'], ['N', '-1'], ['s', '-1'], ['m', '2']] # 统计每个单位的指数总和 unit_exponents = {} for item in my_list: unit = item[0] # 处理无显式指数的情况,默认指数为1 exp = int(item[1]) if len(item) > 1 else 1 if unit in unit_exponents: unit_exponents[unit] += exp else: unit_exponents[unit] = exp # 过滤指数为0的单位,转换为目标格式 ans = [[unit, str(total_exp)] for unit, total_exp in unit_exponents.items() if total_exp != 0] print(ans)
代码说明
- 用字典
unit_exponents存储单位与累计指数的映射,方便分组统计。 - 遍历原始列表时,判断元素长度:仅含单位的项默认指数为1,带指数的项则将字符串指数转为整数累加。
- 最后通过列表推导式筛选出指数总和不为0的单位,转换成要求的二维列表结构。
运行代码后输出结果:
[['m', '-20'], ['km', '-1'], ['s', '-2']]
内容的提问来源于stack exchange,提问作者sonny
相关产品推荐
相关产品推荐

