如何在Python for循环中为每个子元组按序号设置独立变量名
实现方法
首先明确:当待赋值变量数量不固定时,不要强行生成大量散落的独立变量,后续维护、批量处理的成本极高,用结构化容器存储是行业通用的最佳实践。
推荐写法:字典存储
把序号和坐标的映射存在字典里,自动适配任意长度的嵌套元组,不管是4个元素还是604个元素都不需要改代码:
# 原始嵌套元组 test = ((-1.0, 1.0, 0.0), (-1.0, -1.0, 0.0), (1.0, -1.0, 0.0), (1.0, 1.0, 0.0)) coord_map = {} # enumerate从1开始计数,匹配coord1、coord2的命名规则 for index, coord in enumerate(test, start=1): coord_map[f"coord{index}"] = coord
调用的时候直接按键取值即可:
print(coord_map["coord1"]) # 输出 (-1.0, 1.0, 0.0) print(coord_map["coord4"]) # 输出 (1.0, 1.0, 0.0)
如果需要批量处理所有坐标,直接遍历coord_map.values()就能拿到所有子元组,比挨个调用几百个独立变量效率高很多。
特殊场景下生成独立变量的方法
如果你确实有硬性要求必须生成coord1、coord2这类可以直接调用的独立全局变量,可以通过修改全局符号表globals()实现,但是注意:这种写法很容易造成变量名冲突、污染全局命名空间,非必要不要用:
test = ((-1.0, 1.0, 0.0), (-1.0, -1.0, 0.0), (1.0, -1.0, 0.0), (1.0, 1.0, 0.0)) for index, coord in enumerate(test, start=1): globals()[f"coord{index}"] = coord
执行后就可以直接调用独立变量:
print(coord2) # 输出 (-1.0, -1.0, 0.0)
注意:不要尝试在函数内部修改
locals()生成本地独立变量,这个行为在不同Python解释器上的表现不一致,兼容性没有保障。
内容的提问来源于stack exchange,提问作者shoggananna
相关产品推荐
相关产品推荐

