如何在Python中循环字母表并为字母变量赋值?
问题:循环将数组切片分配给A、B、C...等字母变量
需要根据numfactors的取值(范围1-20),把数组paths按固定长度curvelen分段切片,依次赋值给A、B、C...这类大写字母变量,替代硬编码逐个赋值的繁琐写法。
原硬编码实现
import numpy as np numfactors = 4 curvelen = 35 paths = np.random.randn(140) indexes = list() for i in range(numfactors): indexes.append("paths[" + str(curvelen*i) + ":" + str(curvelen*(i+1)) + "]") A=eval(indexes[0]) B=eval(indexes[1]) C=eval(indexes[2]) D=eval(indexes[3])
优化后的循环赋值方案
通过string.ascii_uppercase获取字母序列,结合字典配对切片表达式,再用exec()循环完成赋值:
import string import numpy as np numfactors = 4 curvelen = 35 paths = np.random.randn(140) # 生成每个切片的索引表达式 indexes = list() for i in range(numfactors): indexes.append("paths[" + str(curvelen*i) + ":" + str(curvelen*(i+1)) + "]") # 构建字母与切片表达式的字典 variables = dict(zip(string.ascii_uppercase, indexes)) # 循环执行赋值语句 for k, v in variables.items(): exec(f"{k} = {v}")
注意事项
已知exec()和eval()存在代码注入安全风险,本方案已通过解析器预先验证代码安全性。
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

