Python 返回空数组
我有一个方程,我想对数组中的每个元素(e0)执行这个方程,叫做“能量”。但是,每次计算都需要在定义的范围内循环一组值(i)。当我尝试将一个循环放入另一个循环时,它返回一个空数组,而我想要一个与能量数组大小相同的数组Python 返回空数组,python,arrays,loops,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) *
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
干杯好吧,空名单不应该出现的情况。但是,如果你在评论中所说的是真的,就不应该是你所期望的。例如:
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(29000,2)
生成了一个从2->898(449个元素)开始的列表。这是为能量中的每个元素生成的,您的计算结果将附加到fp1,因此您应该得到449*3=1347个元素作为结果
我真的看不出有任何情况会导致空列表,除了:
elow >= ehigh
energy = []
stepsize < 0
elow>=ehigh
能量=[]
步长<0
因此,我的建议是在循环之前对所有这些值进行打印/调试,也许可以更好地解释您想要实现的目标,因为正如我所说的,即使这样做可行,您也不会得到与
energy
相同长度的输出,而是length=len(energy)*449
elow,ehigh的值是多少,步长?如果elow>=eghigh,这将只生成一个[]列表。您能确认您正在使用Numpy吗?因为append为numpy数组返回一个数组,而为Python列表返回一个数组。你确定你的代码,因为它甚至不为我运行。特别是:((e0*e0)-)看起来几乎是一个语法错误。fp1=np.append()
?是什么导致您认为list.append()
返回一个值?请明确定义“返回空数组”的含义?没有返回
,这不是函数定义。