在Python中,“min(X(X>0),Y,Z)”是什么意思?

2024-10-01 00:33:46 发布

您现在位置:Python中文网/ 问答频道 /正文

有一条语句是用Python编写的,我无法理解这一行的含义

声明如下:

signal = -16
powerRating = 30
energyRating = 30
socHigh = 1
soc = 15
freq = 15
chargeEff = 0.93
answer = min(signal*(signal>0), powerRating, (energyRating*socHigh - soc)*60.0/dataFreq/chargeEff),0)

答案中写着

signal(signal > 0)

这是什么意思


Tags: 答案answer声明signal语句minfreq含义
3条回答

当条件为真时(signal>0)计算为1,否则0。因此,乘法会使任何负值归零(与零相乘产生零),而其他值则不变(与一相乘产生恒等式)

在Python中,真值对应于1,假值对应于0signal > 0将为True或False,并相应地具有1或0值signal * (signal > 0)如果为真,则简单地返回信号的值;否则返回0。可以说是

if signal < 0:
  signal = 0

添加上面的片段if代码与signal * (signal > 0)的工作相同,就好像if条件为False一样,信号值保持不变

在表达式中

signal*(signal>0)

如果signal为正,则signal>0为真,否则为假。True为1,False为0。所以如果你用signal乘以signal>0,如果signal为正,则得到signal,否则为零

这是一种更令人困惑的写作方式

max(signal, 0)

相关问题 更多 >