3 回答

TA貢獻1840條經(jīng)驗 獲得超5個贊
您沒有明確說明,但很明顯您使用的是 numpy 數(shù)組。所以讓我們打破這一行,以一些任意數(shù)組為例:
>>> gift_costs = numpy.array([10, 22, 35, 41])
>>> total_price = (gift_costs[gift_costs < 25]).sum() * 1.08
>>> total_price
34.56
total_price =
: 表達式右側(cè)的內(nèi)容將被分配給total_price
變量。gift_costs < 25
:每當您將比較運算符(例如<
)與 numpy 數(shù)組一起使用時,將為數(shù)組的每個項目評估該條件語句。然后,您將獲得一個充滿布爾值的新數(shù)組,True
如果給定值與條件匹配,則布爾值將是,False
否則。因此,對于上面的示例,您將得到以下內(nèi)容:array([True, True, False, False])
gift_costs[gift_costs < 25]
: 考慮到我們剛才提到的內(nèi)容,我們現(xiàn)在要求gift_costs
返回其值,其位置在以下序列中是True
:[True, True, False, False]
。這些元素是:10 和 22,返回的對象是:array([10, 22])
.sum()
:Numpy 數(shù)組對象有一個名為 的方法sum()
,它返回數(shù)組的總和(∑)。在我們的示例中,這是 10 + 22 = 32。* 1.08
: 最后將sum()
方法(32)返回的值乘以1.08,等于34.56
免責聲明:請原諒我的英語,我盡力讓自己清楚。

TA貢獻1796條經(jīng)驗 獲得超7個贊
基本上是一樣的。for 循環(huán)使用 if 子句來確定成本 <25,然后對其應(yīng)用乘法 * 1.08。one 子句使用 [gift_costs < 25] 進行過濾,隨后應(yīng)用相同的乘法。另一種可能性(在計算時間方面也更有效)是列表理解。

TA貢獻1813條經(jīng)驗 獲得超2個贊
我們也可以在沒有 numpy 的情況下編寫一行代碼。請檢查這個。
l = [10, 22, 35, 41] t = sum((x for x in l if x <25))*1.08
我使用了 sum 函數(shù)并為函數(shù)的參數(shù)創(chuàng)建了一個生成器。
發(fā)電機的方程很簡單。只需閱讀以下內(nèi)容。
“如果 x 小于 25,則在列表 l 中取一個 x”
生成器收集條件中的所有 x,然后轉(zhuǎn)移到求和函數(shù)...
看起來很簡單是不是???
添加回答
舉報