Python如何将两个字符串列表按位拼接生成带小数点的价格列表
Python 按索引合并两个价格片段列表为标准价格格式
输入说明
现有两个一一对应的字符串列表,分别存储价格的整数部分、小数部分片段,原始定义如下(注:所有元素均为字符串类型,否则pricelist2中的00作为数值会触发Python语法错误):
pricelist = ["373", "381", "398", "402", "404", "457", "535", "550", "566"] pricelist2 = ["97", "00", "98", "98", "98", "97", "99", "97", "98"]
需求为按索引位置拼接两个列表的元素,中间加小数点,生成类似[373.97, 381.00, 398.98, ...]格式的最终价格列表。
实现代码
直接用zip()同步遍历两个列表,配对同索引的整数、小数片段,拼接后转浮点数即可:
final_price = [float(f"{int_part}.{decimal_part}") for int_part, decimal_part in zip(pricelist, pricelist2)]
运行后得到的final_price结果为:
[373.97, 381.0, 398.98, 402.98, 404.98, 457.97, 535.99, 550.97, 566.98]
场景适配补充
如果是面向前端展示的场景,需要固定保留两位小数、避免381.0这类省略末尾零的显示问题,可以直接拼接为字符串格式,不需要转浮点数:
# 输出固定两位小数的价格字符串列表 final_price_display = [f"{int_part}.{decimal_part}" for int_part, decimal_part in zip(pricelist, pricelist2)]
运行结果为:
['373.97', '381.00', '398.98', '402.98', '404.98', '457.97', '535.99', '550.97', '566.98']
注意点
- 以上写法默认两个列表长度一致,如果两个列表可能存在长度不匹配的情况,可以替换为
itertools.zip_longest,给缺失的片段设置默认填充值即可 - 因为原始元素是字符串类型,直接拼接的写法不会丢失小数部分的前导/后置零,不会出现价格位数错位的问题
内容的提问来源于stack exchange,提问作者Singh
相关产品推荐
相关产品推荐

