请解释下面循环中发生的事情:
a = [1,2,3]
x = 0
for i in a:
x += i == 1
print x
上面==
做了什么?
答案 0 :(得分:3)
==
是equality operator。如果True
等于1,则返回布尔值i
,否则返回False
。
Python布尔值是int
的子类,将它们相加是一个有效的选项; True
等于1,False
等于0
。
x += (expression)
使用augmented assignment statement;表达式的结果将添加到x
。
因此,每次i
等于1
时,x
都会增加1:
>>> i = 1
>>> i == 1
True
>>> 0 + (i == 1)
1
>>> 5 + (i == 1)
6
然后代码计算a
中的元素数等于1。
答案 1 :(得分:3)
这看起来有点像家庭作业问题,但我会蚕食(不是一口)。
如果我添加这样的分组,你会怎么说:
x += (i == 1)
答案 2 :(得分:2)
==
与C/C++
中的x += i == 1
是相等的关系运算符。
x += (i == 1)
等同于Add 1 to x iff i is equal to 1
,表示
for i in a:
if i == 1:
x += 1
else:
x += 0
print x
COde可以等效地写为
{{1}}