如何将含SHAPE标识的字符串列表转换为0.0/1.0浮点列表?
快速实现SHAPE列表的奇偶编号转换
核心思路是提取每个SHAPExx中的数字部分,判断其奇偶性后映射为对应的浮点值:奇数编号对应1.0,偶数编号对应0.0。
最简便的实现方式:列表推导式
直接用一行代码完成转换,可读性和效率都很高:
original_list = ['SHAPE69', 'SHAPE48', 'SHAPE15', 'SHAPE28', 'SHAPE33', 'SHAPE27', ...] result = [1.0 if int(s[5:]) % 2 else 0.0 for s in original_list]
解释:
s[5:]截取SHAPE后的数字部分(SHAPE固定为5个字符长度)int(s[5:]) % 2判断数字奇偶:奇数结果为1(布尔值True),偶数结果为0(布尔值False)- 根据判断结果直接返回
1.0或0.0
备选方案:map + lambda
如果习惯函数式编程风格,也可以用map配合匿名函数实现:
result = list(map(lambda s: 1.0 if int(s[5:]) % 2 else 0.0, original_list))
兼容不规则命名的扩展(若SHAPE后存在其他字符)
如果遇到SHAPE后非纯数字的特殊情况,可通过字符串拆分提取数字:
result = [1.0 if int(s.split('SHAPE')[1]) % 2 else 0.0 for s in original_list]
内容的提问来源于stack exchange,提问作者mario119
相关产品推荐
相关产品推荐

