Ecco i due casi in esame. (a) Scalari e (b) matrici di Numpy. La mia domanda riguarda l'inizializzazione e l'assegnazione.
1 Perfetto
y = x = 0;
x = 7
print(x,y)
y = 8
print(x,y)
x=10
print( x,y)
l'output è perfettamente a posto. L'effetto di y = x = 0 non è visto.
7 0
7 8
10 8
2 Perfetto
import numpy as np
n=3
#d11 = d =np.zeros(n)#.reshape(-1,1) ;
d11 = np.zeros(n); d =np.zeros(n)
for j in np.arange(0, n, 1):
d11[j] = j**3
d[j] = j**2
print (d11, d )
l'output è perfettamente a posto, poiché d11 e d sono inizializzati separatamente.
[ 0. 1. 8.] [ 0. 1. 4.]
3 Ambiguo
import numpy as np
n=3
d11 = d =np.zeros(n)#.reshape(-1,1) ;
#d11 = np.zeros(n); d =np.zeros(n)
for j in np.arange(0, n, 1):
d11[j] = j**3
d[j] = j**2
print (d11, d )
l'output non è corretto, poiché d11 e d sono inizializzati ed equisiti. Sebbene aggiorni d11 e d separatamente, ci si identifica a vicenda con l'aggiornamento più recente. L'output va così:
[ 0. 1. 4.] [ 0. 1. 4.]
Query:
Initializing multiple variables with a single line is working fine on scalars (y = x = 0) , but not on matrices (d11 = d =np.zeros(n))?
Is there something wrong with my coding or understanding ? This is not the case with Matlab. Why d11 = d is taking effect in case 3, though they are being updated at different stages/lines.
Case 3 can be considered as bad programming skill ?. I dont see any use of this kind of functionality from any programming language ?
Per favore, illuminami. Mi sono appena trasferito da MATLAB a Python. Quindi ho ottenuto questa domanda fondamentale.
Grazie in anticipo per la tua attenzione.