>>> count = 0
>>> for c in "##.#.":
... count = count + 1 if c == '.' else 0
...
>>> print(count)
1
>>> count = 0
>>> for c in "##.#.":
... count = count + (1 if c == '.' else 0)
...
>>> print(count)
2
为什么第一个示例不打印计数器2?
答案 0 :(得分:2)
条件表达式中有a very low precedence。
所以第一个表达式实际上被解析为:
count = (count + 1) if c == '.' else 0
每次count
会将c != '.'
设置为0。
答案 1 :(得分:0)
在第一种情况下,count
值被替换
>>> for c in "##.#.":
... count = count + 1 if c == '.' else 0
... print (count)
...
0
0
1
0
1
count
在这里添加
>>> count=0
>>> for c in "##.#.":
... count = count + (1 if c == '.' else 0)
... print (count)
...
0
0
1
1
2
>>>
答案 2 :(得分:-3)
因为这对应于if的True状态。
(True) if (Condition) else (Else)
count = count + 1 if c == '.' else 0
的真实状态(计数+ 1)
count + (1 if c == '.' else 0)
此(1)的真实状态
我告诉你有点复杂吗?