3 回答
TA贡献1840条经验 获得超5个赞
您没有明确说明,但很明显您使用的是 numpy 数组。所以让我们打破这一行,以一些任意数组为例:
>>> gift_costs = numpy.array([10, 22, 35, 41])
>>> total_price = (gift_costs[gift_costs < 25]).sum() * 1.08
>>> total_price
34.56
total_price =
: 表达式右侧的内容将被分配给total_price
变量。gift_costs < 25
:每当您将比较运算符(例如<
)与 numpy 数组一起使用时,将为数组的每个项目评估该条件语句。然后,您将获得一个充满布尔值的新数组,True
如果给定值与条件匹配,则布尔值将是,False
否则。因此,对于上面的示例,您将得到以下内容:array([True, True, False, False])
gift_costs[gift_costs < 25]
: 考虑到我们刚才提到的内容,我们现在要求gift_costs
返回其值,其位置在以下序列中是True
:[True, True, False, False]
。这些元素是:10 和 22,返回的对象是:array([10, 22])
.sum()
:Numpy 数组对象有一个名为 的方法sum()
,它返回数组的总和(∑)。在我们的示例中,这是 10 + 22 = 32。* 1.08
: 最后将sum()
方法(32)返回的值乘以1.08,等于34.56
免责声明:请原谅我的英语,我尽力让自己清楚。
TA贡献1796条经验 获得超7个赞
基本上是一样的。for 循环使用 if 子句来确定成本 <25,然后对其应用乘法 * 1.08。one 子句使用 [gift_costs < 25] 进行过滤,随后应用相同的乘法。另一种可能性(在计算时间方面也更有效)是列表理解。
TA贡献1813条经验 获得超2个赞
我们也可以在没有 numpy 的情况下编写一行代码。请检查这个。
l = [10, 22, 35, 41] t = sum((x for x in l if x <25))*1.08
我使用了 sum 函数并为函数的参数创建了一个生成器。
发电机的方程很简单。只需阅读以下内容。
“如果 x 小于 25,则在列表 l 中取一个 x”
生成器收集条件中的所有 x,然后转移到求和函数...
看起来很简单是不是???
添加回答
举报