lamupen 发表于 2020-6-21 21:55:42

有老哥给解释下这段转换成三元运算符是啥逻辑吗

x, y, z = 6, 5, 4
if x < y:
    small = x
    if z < small:
      small = z
elif y < z:
    small = y
else:
    small = z

small = x if (x < y and x < z) else (y if y < z else z)中的 (x < y and x < z)这段没看懂。{:10_266:}

Twilight6 发表于 2020-6-21 21:57:58

本帖最后由 Twilight6 于 2020-6-21 22:03 编辑



small = x if <条件1> else y if <条件2> else z

可以看成这样,就是条件 1 成立返回 x ,否则如果条件 2 成立返回 y ,否则返回 z

就是 if 前面是 if 的<条件> 成立时候 返回的值,而 else 是条件不成立 返回后面的值 或者 继续执行下面的代码

而这里else 里面继续嵌套了 if 也是同样的道理,如果 第二个 if <条件2> 条件2 成立返回 第二个 if 前面的 y

否则就是 两个 if 都不满足 返回了 z ,这里也就是多了 small 的这步,就是用一个 small变量来接收 三元运算符的返回值




1223253411 发表于 2020-6-21 22:06:35

本帖最后由 1223253411 于 2020-6-21 22:09 编辑

三元操作符,没用过,不知道嘿嘿嘿,不过应该和条件表达式差不多,如果差不多的话,推一下就好了

small = x if (x < y and x < z) else (y if y < z else z)
x,y,z = 6,5,4
if x<y and x < z:
    small = x
else:
    if y < z:
      small = y
    else:
      small = z

print(small)

# 应该是这样吧,如果有错的话麻烦帮我指一下,这东西还是玩不懂,反正结果是4,求最小么,可以就行了




ps: 我就说一下哦,像条件表达式啊、列表推导式啊、字典推导式啊、等,其实都不是很重要的东西,这种只是让你的代码更加艺术,但也只限于艺术,我认为的哦,会不会根本不影响我们敲代码,这东西也只适用于简单逻辑,其他的就算了,能用到的地方少的很,只要逻辑复杂一点,基本都是一个一个来了


锦上添花的东西,不会就算了,一步步写怎么了,代码能不能执行,影响代码效率吗,这东西的效率完全和下面的那些代码一样,因为它的执行过程就是下面那样,有时候写成这样还很影响代码的可读性,看着还得绕一下,算了,代码的可读性为最高要求,读起来难受的代码绝对不是什么好代码


riodavid 发表于 2020-6-21 23:00:41

本帖最后由 riodavid 于 2020-6-21 23:55 编辑

楼主你好,只要画个简单的流程图,就可以一目了然啦。
https://ftp.bmp.ovh/imgs/2020/06/ce9702457d65e720.png

lamupen 发表于 2020-6-21 23:42:38

Twilight6 发表于 2020-6-21 21:57
可以看成这样,就是条件 1 成立返回 x ,否则如果条件 2 成立返回 y ,否则返回 z

就是 if 前面 ...

感谢指导{:10_298:}

Twilight6 发表于 2020-6-21 23:43:49

lamupen 发表于 2020-6-21 23:42
感谢指导

{:10_281:}客气了~

lamupen 发表于 2020-6-21 23:44:35

1223253411 发表于 2020-6-21 22:06
三元操作符,没用过,不知道嘿嘿嘿,不过应该和条件表达式差不多,如果差不多的话,推一下就好了




我也觉得我用到的频率应该不会太高,主要是还在学,想弄清楚点。用不用是一回事,会不会是另一回事。搞清楚些以后真遇上这样写的神仙好歹看得懂代码{:10_266:}
页: [1]
查看完整版本: 有老哥给解释下这段转换成三元运算符是啥逻辑吗