Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 理解表达困难_Python_Data Structures_Hashtable - Fatal编程技术网

Python 理解表达困难

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:

我当时正在做一个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:
            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:这是一个比较,不是一个“条件表达式”。