我有一个值列表x = [1,-1,-1,1,1,-1,1,-1,1,-1]
,我有另一个空白列表
y=[ ]
我正在尝试创建一个函数,它将取一个sigma值x
并存储在其中y
.
例如,y[0]
应该是总和x[0]*x[0] + x[0]*x[1] + x[0]*x[2] + ... + x[0]*x[9]
.
同样,y[1]
应该是总和x[1]*x[0] + x[1]*x[1] + x[1]*x[2]+ ... + x[1]*x[9]
.
必须这样做y[0] through y[9]
.
此外,在总和中,x[i]*x[i]
必须为零.因此,例如y[0]
,x[0]*x[0]
必须为零.同样,在总和中y[1]
,x[1]*x[1]
必须为零.
这是我的代码,但它总是给我一些关于索引的错误:
x=[1,-1,-1,1,1,-1,1,-1,1,-1]
y=[]
def list_extender(parameter):
for i in parameter:
parameter[i]*parameter[i]==0
variable=numpy.sum(parameter[i]*parameter[:])
if variable>0:
variable=1
if variable<0:
variable=-1
y.append(variable)
return y
Run Code Online (Sandbox Code Playgroud)
然后我运行print list_extender(x)
哪个应该打印列表y
与上面描述的西格玛总和,但我总是得到一个错误.我做错了什么?我们将非常感谢您的帮助!
你在这里做了太多的打字和计算.如果你计算了x
第一个的总和,那么你的函数可以更短更简单,然后用它来计算元素y
.它也跑得更快.
这样做:
x_sum = sum(x)
y = [item * (x_sum - item) for item in x]
# or, if you really want to store the results into an existing list y
# y[:] = [item * (x_sum - item) for item in x]
Run Code Online (Sandbox Code Playgroud)
sum
如果你使用numpy,用numpy操作替换和列表理解:
import numpy as np
x = np.array([1,-1,-1,1,1,-1,1,-1,1,-1])
y = x * (x.sum() - x)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5672 次 |
最近记录: |