我有30个变量,模式为aod7039, aod7040, ...., aod7068
。
我想对所有这些变量进行相同的操作(即计算轴上的平均值)并覆盖原始变量。
到目前为止,我写了30次相同的行,并想知道是否有更短更简单的方法可以做到这一点?
我对每个想法都很满意!
答案 0 :(得分:2)
这将为您提供以'aod'
values = [v for k,v in globals() if k.startswith('aod')]
但有30个变量闻起来很糟糕。
答案 1 :(得分:2)
首先,不要使用30个变量,使用列表aod[]
其次,使用
for i in range(7039, 7069):
aod[i] = yourFunction(aod[i])
覆盖现有列表
答案 2 :(得分:1)
如果我理解你的问题,你只想迭代这些变量吗?
如果是这样,你可以保留对某些列表/字典的引用,然后以这种方式迭代/更新。
List = []
List.append(aod7039)
for item in List:
#do something
答案 3 :(得分:1)
我有30个变量的模式aod7039,aod7040,....,aod7068
然后您遇到了设计问题 - 您应该使用list
或dict
。将所有这些变量替换为list
或dict
(或collections.OrderedDict
,如果您需要密钥访问权限,同时保留插入顺序),那么只需迭代您的容器,即
# with a list:
for index, item in enumerate(yourlist):
yourlist[index] = do_something_with(item)
# with a dict or OrderedDict:
for key, item in enumerate(yourdict):
yourdic[key] = do_something_with(item)
答案 4 :(得分:0)
将30个变量存储在一个列表中,并使用map来解决它而不需要任何循环:
varlist=[aod7039, aod7040, ...., aod7068]
result=list(map(yourfunction, varlist))