Python如何将frame0、frame1等变量值自动添加到列表中?
解决方法
你现在的问题是把变量名的字符串放进了列表,而不是变量的实际值,下面给你几种可行的解决方式:
方法1:通过全局命名空间字典获取变量值
利用globals()函数获取当前全局作用域的变量字典,键是变量名字符串,值对应变量的实际内容,修改循环代码即可:
frame0 = "D" frame1 = "CD" frame2 = "BCD" frame3 = "ABCD" frames = [] for i in range(4): frames.append(globals()[f'frame{i}'])
运行后frames就会得到["D", "CD", "BCD", "ABCD"]。
方法2:用eval解析字符串(不推荐但可用)
如果只是自己写小脚本,也可以用eval直接把变量名字符串解析为变量:
frame0 = "D" frame1 = "CD" frame2 = "BCD" frame3 = "ABCD" frames = [] for i in range(4): frames.append(eval(f'frame{i}'))
注意:eval会执行任意传入的字符串代码,若变量名来源不可控会有安全风险,正式场景尽量避免使用。
方法3:更简洁的初始化方式
其实完全没必要单独定义frame0到frame3这些变量,直接把帧内容初始化进列表更省事:
frames = ["D", "CD", "BCD", "ABCD"]
内容的提问来源于stack exchange,提问作者Rav3nPho3nix
相关产品推荐
相关产品推荐

