对于精通Python语言的程序员来说,Python 有一种语法刚入行的人看到会一脸懵,坦白的来说他其实非常的简单,仅仅只是一个语法,别拿它太当回事,知道会用就OK了。 对于我个人来说三元表达式很简单,无非就是下面的这样的格式嘛。
a = 10 b = 22 max = a if a>b else b if a>b: max = a else: max = b这是不是很好理解。 但是我还是决定写一遍文章来记录这个三元表达式,这是为什么呢? 因为这里面还是有一些比较难理解的东西,就是我们下面要说的三元表达式的嵌套。 就说下面这道题,我一开始就没有搞明白。 使用嵌套的三元组表达式统计数字频率,如果是2的倍数加1,如果是4的倍数加2,否则加0
if __name__ == '__main__': pi = [3, 14, 15, 9, 26, 5, 35, 8, 97, 932] even_count = 0 for i in pi: # TODO(You): 请在此实现统计代码 assert even_count == 6#请选出下列能正确实现这一功能的选项。 我们先说正确答案,然后再来理解哈。
even_count += 2 if i % 4 == 0 else 1 if i % 2 == 0 else 0我们如果不用三元表达式来写这段代码应该是怎么样呢? 完整代码如下:
if __name__ == '__main__': pi = [3, 14, 15, 9, 26, 5, 35, 8, 97, 932] even_count = 0 for i in pi: # TODO(You): 请在此实现统计代码 if i % 4 == 0: even_count += 2 elif i % 2 == 0: even_count += 1 else: even_count += 0 print(even_count == 6)看了分解的代码,我们再来理解上面的代码,为了方便,复制到下面:
even_count += 2 if i % 4 == 0 else 1 if i % 2 == 0 else 0我们要清楚,这样的嵌套其实最后最能选定一个结果,就是说,这个嵌套跟我们的python中的if…elif…else结构一样,而不是if…if…else,这样的结构可能会选定多个结果。 我们从左往右读代码也是一样的,也是python对这句话的执行顺序。 首先读
if i % 4 == 0如果这个条件成立,那就直接执行。
even_count += 2后面的条件也就不管了,如果这个条件不成立,才会继续判断条件。
if i % 2 ==0如果条件成立,那么就会执行相应的语句。
even_count += 1否则执行语句。
even_count += 0不知道我这样说你理解了没有,至于这道题为什么是要 if i % 4 == 0 在 if i % 2 ==0 前面,是因为前面一个条件包含了第二个条件,这样想,如果把 if i % 2 ==0 放在 if i % 4 == 0 前面,那么那些4的倍数就不会被单独提出来,而是和2的倍数一起放在一个集合里面,这显然不是我们想要的。 标签:even,count,python,else,__,三元,表达式 From: https://www.cnblogs.com/q-q56731526/p/17118549.html