返回空数组

1 投票
1 回答
1681 浏览
提问于 2025-04-17 12:41

我有一个公式,想要对一个叫做'energy'的数组里的每个元素(e0)进行计算。不过,每次计算都需要在一个定义好的范围内循环遍历一组值(i)。当我尝试把一个循环放在另一个循环里面时,结果却返回了一个空数组,而我希望得到一个和energy数组大小一样的数组。

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

其实,空列表的情况是不应该出现的。不过,如果你在评论中说的是真的,那你应该能得到你期待的结果。举个例子:

 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

你可以看到,生成的数组长度和能量(energy)的长度是不一样的。这是因为 range(2, 900, 2) 生成了一个从2到898的列表(总共有449个元素)。这个列表是针对能量中的每一个元素生成的,计算的结果会被添加到fp1中,所以你应该得到的结果是449 * 3 = 1347个元素。

我实在想不出有什么情况会导致你得到一个空列表,除了:

elow >= ehigh

energy = []

stepsize < 0

所以我的建议是在循环之前打印/调试一下所有这些值,可能还要更清楚地解释一下你想要实现的目标。因为就像我说的,即使这个能正常工作,你得到的输出长度也不会和 energy 一样,而是 length = len(energy) * 449

撰写回答