【发布时间】:2014-01-15 02:50:33
【问题描述】:
我不是程序员,因此,我通过在这样的论坛上搜索来快速学习。 请耐心等待,因为我什至不使用本机 Python,而是在具有 Python 解释器的应用程序中允许对特定处理进行编码
我已经看到了我要问的例子,但它们与我需要的不太相似,所以我需要更具体地问
Q1:我有一个数据集,其中包含一段时间内的波形(列表数组)。命名约定例如为WF001、WF002、...、WF009。我在这个论坛中找到了如何使用 global() 函数迭代变量。下面的示例仅使用列表中的第一项 (1,1)
g=globals()
import ViewerStat as stat #this is a library from the application
print g["WF00"+str(1)].value(1,1) #this command works fine.
但是
for i in range(1,9):
print g["WF00"+str(i)].value(1,1) # this do not work
我想最终将值分配给组合波形 下面的代码根本不起作用
for i in range (1,9)
g["NEW_WF00"+str(i)].value(1,1)=stat.median([g["WF00"+str(i)].value(1,1),g["WF00"+str(i+1)].value(1,1),g["WF00"+str(1+2)].value(1,1)])
注意:stat.median() 函数在打印且未迭代时确实有效
print stat.median([g["WF00"+str(1)].value(1,1),g["WF00"+str(2)].value(1,1),g["WF00"+str(3)].value(1,1)])
所以我遇到了迭代这个变量的问题,然后在制作数学函数后使用globals() 进行赋值
Q2:列表的长度约为 300 个元素。我将使用相邻波形计算中值,并且我需要环绕列表,例如,元素 300 的中值将使用元素 199、200 和 1 计算。由于上面列出的命名复杂性,我该如何环绕周围没有为列表的边界做一个单独的循环?这可能是一件小事,但我的数据集非常大,而且我正在进行大量计算。记住上面的例子是单个时间索引,但我有超过 150000 个时间索引和大约 150 个波形
【问题讨论】:
-
“我在这个论坛上发现了如何使用 global() 函数迭代变量。”在哪里?因为我真的去那里做什么并且对提出这个建议的人投反对票。不要不要使用
globals()。将WF变量放入一个列表并遍历该列表。除了“不起作用”之外,not 是否意味着 任何东西!如果它在 full 回溯后引发异常,如果它给出了您不期望的结果,则发布实际结果和您所期望的! -
@Bakuriu:我在精神上 200% 支持你,但至少有可能 OP 所在的环境将其数据结构注入到嵌入式 Python globals() 中。如果
g["WF00"+str(1)]有效,那么这可能就是正在发生的事情,尽管 OP 的更新似乎排除了这一点。不过,第一步可能仍然是从globals()中提取它们并将它们放入一个列表或更有用的字典中。
标签: python list python-2.x