如何在for循环中处理浮点型元组?地理坐标元组随机选择后解包问题
解决经纬度元组的解包问题
嘿,我明白你遇到的问题啦!咱们先拆解下问题所在:你用random.choice(list_geo)拿到的x是单个元组(比如(50.111, -7.222)),但你写的for a, b in x会把这个元组里的每个float元素单独拿出来,尝试拆成a和b——单个浮点数肯定没法拆成两个变量,这就导致报错了。
其实根本不需要转字符串再转回float,有两个简单的解决办法:
方法一:直接解包单个元组(最适合当前场景)
既然你只随机选了一个元组,完全不需要用for循环,直接把元组的两个元素赋值给变量就行:
import random list_geo = [(50.111, -7.222), (50.222, -7.333)] x = random.choice(list_geo) a, b = x # 直接解包单个元组 print(a - 1) print(b + 1)
方法二:用循环处理(适合需要选多个元组的场景)
如果以后你需要随机选多个元组(比如用random.sample),可以把选中的元组放到一个可迭代对象里,再用for循环遍历解包:
import random list_geo = [(50.111, -7.222), (50.222, -7.333)] # 比如随机选1个元组,放到列表里 selected_geos = [random.choice(list_geo)] for a, b in selected_geos: print(a - 1) print(b + 1)
这样循环每次迭代的是完整的元组,就能顺利拆成a(纬度)和b(经度)了。
内容的提问来源于stack exchange,提问作者user9092346
相关产品推荐
相关产品推荐

