Python 理解表达困难
我当时正在做一个leetcode问题,在回顾一个解决方案时,我被解决方案中的某一行内容吓了一跳。leetcode问题尤其突出 解决方案:Python 理解表达困难,python,data-structures,hashtable,Python,Data Structures,Hashtable,我当时正在做一个leetcode问题,在回顾一个解决方案时,我被解决方案中的某一行内容吓了一跳。leetcode问题尤其突出 解决方案: class Solution: def numSubarraysWithSum(self, A: List[int], S: int) -> int: res = 0 sm = 0 sums = collections.defaultdict(int) for a in A:
class Solution:
def numSubarraysWithSum(self, A: List[int], S: int) -> int:
res = 0
sm = 0
sums = collections.defaultdict(int)
for a in A:
sm += a
res += sums[sm - S] + (sm == S)
sums[sm] += 1
return res
除此之外,我了解正在发生的一切:
res += sums[sm - S] + (sm == S)
我以前从未在加法运算中见过条件表达式。条件表达式的计算结果为布尔值,在Python中,布尔值只是
int
的子类型False
为0,True
为1,因此如果sm
等于S
或以其他方式添加0,则添加sm==S
与添加1相同。=
生成一个布尔值,其行为恰好类似于1或0…请尝试打印(0+(sm==S))
若要查看发生了什么,请准确地向我们展示您在跟踪此代码中的中间表达式时不理解的内容。“向我解释这个代码块”超出了堆栈溢出的范围:解构复合表达式,并告诉我们关于其中一个或两个操作的不理解之处。这是一个布尔比较,不是一个条件流。我感觉它是这样工作的,谢谢你的澄清:DNitpick:这是一个比较,不是一个“条件表达式”。