Python中如何将循环索引整合到变量名称中?
如何在Python循环中创建带索引的变量名记录运行时长?
嘿,作为Python新手,你想在循环里给每次模拟的运行耗时创建duration1、duration2这类带索引的变量,其实非常不推荐直接生成这类动态变量名——这种做法会让你的代码变得混乱,后续维护和遍历这些变量都会很麻烦。Python里有更优雅、更易维护的方式来处理这种场景,我给你梳理几个方案:
首选方案:用列表存储耗时
列表是最适合这种场景的容器,每次循环把耗时添加进去,之后可以通过索引快速访问,操作起来也最灵活:
import time import subprocess durations = [] # 初始化一个空列表来存所有耗时 i = 1 while i <= 5: # 这里替换成你实际需要的循环次数 start_time = time.time() return_code = subprocess.call("runtheprogramm") elapsed_time = time.time() - start_time print(f"--- {elapsed_time} seconds ---") durations.append(elapsed_time) # 把当前次的耗时加入列表 i += 1 # 后续查看结果: # 第一次运行的耗时是 durations[0],第二次是 durations[1]... # 如果习惯从1开始索引,可以先给列表加个占位符: # durations = [None] # 索引0不用,从1开始存储 # 然后用 durations.append(elapsed_time) 后,durations[1]就是第一次的耗时
备选方案:用字典存储(保留类似duration1的键名)
如果你确实想要类似duration1这样的“变量名”形式,可以用字典来存储,键就是你想要的字符串,值是对应耗时:
import time import subprocess duration_dict = {} # 初始化空字典 i = 1 while i <= 5: start_time = time.time() return_code = subprocess.call("runtheprogramm") elapsed_time = time.time() - start_time print(f"--- {elapsed_time} seconds ---") duration_dict[f"duration{i}"] = elapsed_time # 动态生成键名 i += 1 # 后续查看:比如要取第一次的耗时,就用 duration_dict["duration1"]
不推荐的方案:动态创建全局变量
如果你非要生成duration1这类独立变量,可以用globals()函数操作全局命名空间,但我强烈不建议这么做——会让你的代码逻辑变得不透明,后续排查问题也很困难:
import time import subprocess i = 1 while i <= 5: start_time = time.time() return_code = subprocess.call("runtheprogramm") elapsed_time = time.time() - start_time print(f"--- {elapsed_time} seconds ---") globals()[f"duration{i}"] = elapsed_time # 动态创建全局变量 i += 1 # 之后你可以直接用 duration1、duration2 这些变量,但真的不推荐!
总的来说,优先选择列表或者字典的方案,不仅代码更清晰,后续要做统计(比如计算平均耗时、找出最长/最短耗时)也会方便很多。
内容的提问来源于stack exchange,提问作者Andreas Eugster
相关产品推荐
相关产品推荐

