Форум сайта python.su
0
Доброго времени суток. Возникла такая проблема с Python-ом: в нижеприведенном коде создаются две матрицы - L и L_v, далее необходимо кое-какие куски из матрицы L “заносить” в матрицу L_v. Для выделения кусков из каждой матрицы служит функция b_j, принимающая матрицу и некоторое число j_. Собственно вопрос технический: почему при выделении с помощью функции необходимого куска матрицы L_v и присваиванию этому куску выделенной части матрицы L возникает ошибка SyntaxError: can't assign to function call. Разве в результате выполнения функции b_j(L_v,0) - это не объект matrix 3 на 3, так же как b_j(L,0)?
import numpy as np n=9 n_=3 def b_j(L_,j_): return L_[n_*j_:n_*(j_+1),n_*j_:n_*(j_+1)] a=np.zeros((n,n)) a1=np.zeros((n,n)) L=np.matrix(a) L_v=np.matrix(a1) j=0 # 1. Кусок 3x3 из матрицы L -> в L_v L_v[n_*j:n_*(j+1),n_*j:n_*(j+1)]=L[n_*j:n_*(j+1),n_*j:n_*(j+1)] # Получается нужный результат # 2. То же самое L_v[n_*j:n_*(j+1),n_*j:n_*(j+1)]=b_j(L,0) # Получается нужный результат # 3. НО b_j(L_v,0)=b_j(L,0) # SyntaxError: can't assign to function call
b_j(L_v,0)[1,1] = b_j(L,0)[1,1] # Работает
Офлайн
857
>>> def f(): ... return [][:] ... >>> f() = [] File "<stdin>", line 1 SyntaxError: can't assign to function call >>> >>> [][:] = [] >>>
Отредактировано py.user.next (Ноя. 15, 2014 01:05:50)
Офлайн