Python 尽管代码完全相同,为什么结果不同?
我想构建一个函数,将两个numpy数组求和为一个新数组,当且仅当不同的索引为euqal时Python 尽管代码完全相同,为什么结果不同?,python,function,numpy,Python,Function,Numpy,我想构建一个函数,将两个numpy数组求和为一个新数组,当且仅当不同的索引为euqal时 x = np.array([2,1,1,1]) y=np.array([2,1,0,1]) overlap = np.zeros(4) for i in range(0,len(x)): if x[i] == y[i]: overlap[i]= x[i]+y[i] print(overlap) [4. 2. 2. 2.] 这是意料之中的事。现在我想定义函数,但是输出是不同
x = np.array([2,1,1,1])
y=np.array([2,1,0,1])
overlap = np.zeros(4)
for i in range(0,len(x)):
if x[i] == y[i]:
overlap[i]= x[i]+y[i]
print(overlap)
[4. 2. 2. 2.]
这是意料之中的事。现在我想定义函数,但是输出是不同的,尽管代码完全相同
def sum_overlap(x,y):
overlap = np.zeros(4)
for i in range(0,len(x),1):
if x[i] == y[i]:
overlap[i] = x[i] + y[i]
print(overlap)
sum_overlap(x,y)
[4. 0. 0. 0.]
[4. 2. 0. 0.]
[4. 2. 2. 0.]
[4. 2. 2. 2.]
我认为它与迭代器有关,但我无法理解。您的print语句处于循环中,因此每次调用它时,它都会打印出列表。将打印语句从循环中取出,但保留在函数中,并且输出应与工作代码相同:
def sum_overlap(x,y):
overlap = np.zeros(4)
for i in range(0,len(x),1):
if x[i] == y[i]:
overlap[i] = x[i] + y[i]
return overlap
您打印了多次,但最终结果是相同的。你不应该退回它吗?