请解释这个python循环,它的计算结果是数组,并且是sum()ed

2024-10-03 09:18:43 发布

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

我在hackerrank上见过很多这样的循环,但我仍然不明白它们是如何工作的。为什么它有一个常量整数“1”?不应该是“i”而不是“1”吗?谁能给我解释一下吗。你知道吗

sum (1 for i in l if i >= a and i <= b)

信用到期时的信用。我从Shashwat的一个非常优雅的问题解决方案中复制了这个循环。这个问题是“夏洛克和广场”在黑客银行算法的好奇者。你知道吗


Tags: andin算法forif整数银行解决方案
3条回答

在你的例子中,他们基本上是为l中的每一项加1,如果该项大于或等于a,而该项小于或等于b

这基本上等于这个代码:

x = []
for i in l:
    if i >=a and i <= b:
        x.append(1)
sum(x)

我不知道你的价值观,所以我们假设:

>>> l = list(range(10))
>>> a = 4
>>> b = 7

如果您将代码行分解为几个步骤并打印中间结果,则会更清楚:

>>> [1 for i in l if i >= a and i <= b]
[1, 1, 1, 1]

这就是传递给sum的内容。(当您去掉方括号时,它隐式地成为一个生成器,但这是它作为列表的样子。)

如果你不理解理解力,它相当于:

>>> result = []
>>> for i in l:
...   if i >= a and i <= b:
...     result.append(1)
... 
>>> result
[1, 1, 1, 1]

求和相当于将result = []改为result = 0,将result.append(1)改为result += 1。你知道吗

sum (1 for i in l if i >= a and i <= b)

它要做的是,仅当条件i >= a and i <= bli作为迭代器进行迭代时通过,才创建1的生成器表达式。你知道吗

然后,sum将所有1相加。你知道吗

相关问题 更多 >