Python使用For循环拆分坐标列表生成独立子列表
问题描述
我有一个包含坐标的列表,每个元素对应一组坐标对:
cords = ["lat1,long1;lat2,long2","lat3,long3;lat4,long4"]
需要通过for循环将每个坐标集合从原列表中拆分出来,生成独立的列表。由于原列表中坐标对的数量可能变化,需要一个能适配任意元素数量的for循环。
期望得到的结果:
cords1 =["lat1,long1 ; lat2,long2"] cords2 =["lat3,long3 ; lat4,long4"]
解决方案
方法一:用字典存储(推荐,更易维护)
当元素数量不确定时,用字典存储拆分后的列表是更规范的做法,避免生成大量零散变量:
cords = ["lat1,long1;lat2,long2","lat3,long3;lat4,long4"] result_dict = {} # 遍历原列表,从1开始计数索引 for idx, coord_str in enumerate(cords, start=1): # 替换分号格式,匹配期望结果 formatted_str = coord_str.replace(';', ' ; ') # 以"cords1"、"cords2"为键存入字典 result_dict[f"cords{idx}"] = [formatted_str] # 调用示例 print(result_dict["cords1"]) # 输出: ['lat1,long1 ; lat2,long2'] print(result_dict["cords2"]) # 输出: ['lat3,long3 ; lat4,long4']
方法二:动态创建独立变量
如果确实需要生成cords1、cords2这类独立变量,可以通过globals()函数实现:
cords = ["lat1,long1;lat2,long2","lat3,long3;lat4,long4"] for idx, coord_str in enumerate(cords, start=1): formatted_str = coord_str.replace(';', ' ; ') # 动态创建全局变量 globals()[f"cords{idx}"] = [formatted_str] # 直接使用变量 print(cords1) # 输出: ['lat1,long1 ; lat2,long2'] print(cords2) # 输出: ['lat3,long3 ; lat4,long4']
注意事项
enumerate(cords, start=1)用于获取元素的序号(从1开始),刚好对应变量名里的数字后缀。replace(';', ' ; ')是为了把原字符串中的分号替换成带空格的格式,和你期望的结果一致。- 优先推荐字典存储的方式,动态创建变量会降低代码可读性,后续维护难度更高。
内容的提问来源于stack exchange,提问作者Mat
相关产品推荐
相关产品推荐

