返回并清空数组

时间:2012-02-09 15:29:38

标签: python arrays loops

我有一个方程式,我想对数组中称为“能量”的每个元素(e0)执行。但是,每次计算都需要在定义的范围内循环一组值(i)。当我尝试将一个循环放在另一个循环中时,它返回一个空数组,而我想要一个与能量数组大小相同的数组。

fp1 = []
for e0 in energy:
    for i in range(elow, ehigh, stepsize):
        fp1 = np.append(fp1, np.cumsum((2 / np.pi) * ((mu(element, e0) * i / ((e0 * e0)-)(i * i)))) * 2)

所有这些都比较新,所以假设我完全忽略了一些东西。 使用Python 2.7。

干杯

1 个答案:

答案 0 :(得分:0)

不应该出现空列表的情况。但是,如果你在评论中所说的是真的,那么neigthe应该是你所期望的。例如:

 elow = 2
 ehigh = 900
 stepsize = 2
 fp1 = []
 energy = [1, 2, 3]
 for e0 in energy:
     for i in range(elow, ehigh, stepsize):
          fp1 = numpy.append(fp1, 15)

 fp1
 array([ 15.,  15.,  15., ...,  15.,  15.,  15.])
 len(fp1)
 1347

正如你所看到的,你不会得到一个相同长度的能量阵列。这是因为range(2, 900, 2)生成了一个从2开始的列表 - > 898(449个元素)。这是为能量中的每个元素生成的,计算结果将附加到fp1,因此您应该得到449 * 3 = 1347个元素。

我真的看不到任何情况,除了以下结果你得到一个空列表:

elow >= ehigh

energy = []

stepsize < 0

所以我的建议是在循环之前对所有这些值进行打印/调试,也许可以尝试更好地解释你想要实现的目标,因为就像我说的那样,即使这样可行,你也不会得到一个输出长度与energy相同,而不是length = len(energy) * 449