此代碼的目的是「編寫一個函數/子gen_2nd_deg_polys,它接受一個3元組列表並返回一個匿名第二個 度多項式的列表。」 這是告訴我,「功能」對象沒有Getitem屬性。從3元組生成二次多項式
我錯過了什麼重要的關於訪問lambda內的元組?
import sys
def gen_2nd_deg_polys(coeffs):
return lambda x: (
str(coeffs[0][0]) + 'x^2 + ' + str(coeffs[0][1]) + 'x + ' + str(coeffs[0][2]) + ' at x = ' + str(x), coeffs[0][0] * x ** 2 + coeffs[0][1] * x + coeffs[0][2])
polys = gen_2nd_deg_polys([(1, 2, 3), (4, 5, 6)])
polys[0](1)
polys[1](2)
編輯...還是非常錯誤
def gen_2nd_deg_polys(coeffs):
plist = []
for coeff in coeffs:
plist.append(lambda x, coeff=coeff:str(coeff[0]) + 'x^2 + ' + str(coeff[1]) + 'x + ' + str(coeff[2]) + ' at x = ' + str(x), coeff[0] * x**2 + coeff[1] *x + coeff[2])
return plist
polys = gen_2nd_deg_polys([(1, 2, 3), (4, 5, 6)])
print(polys[0](1))
print(polys[1](2))
您正在返回的,而不是lambda函數列表 – inspectorG4dget
我怎麼會去選出一位lambda函數lambda函數列表? –
提示:'coeffs [0] [0]'從第一個3元組係數中獲得x^2的係數。來自第二個三元組的相同係數是'coeffs [1] [0]';因此第i個三元組中的x^2的係數是「coeffs [i] [0]」。現在,嘗試將該邏輯放入for循環,然後將您的lambda函數附加到列表中 – inspectorG4dget