暑假集训后回家,在家闷了几天,忽然发现好久没碰Python了。在这台陪了我8年的老电脑上下了Python,写着写着代码突然卡死,干了个尴尬,绝对不是我敲得太快它才卡的,咳

咳。最近都是在玩C++,现在发现Python的确生疏了很多。不过,我又学到了个骚操作。分享出来给有兴趣的朋友们看看,也算是笔记吧啦巴拉巴拉。。。。。。

我要说的就是那传说中天下无双的、缺之不可的、大名鼎鼎的。。。。。if else 选择语句。

是的,你没看错。就是if else。

C语言中可以这么玩:

        if (x > y) w = x;
        else w = y;

变成Python就是:

        if x > y:
            w = x
        else:
            w = y

这个简单就不解释了,Python还可以这样:

        w = x if x > y else y

上面这个也能看懂吧,是不是更接近自然语言?这不算啥,骚的操作来啦:

 w = [y,x][x>y]

懵逼了吧,嘿嘿。这玩意有人说是二维列表,我不知道大家都是怎么叫的,不过的确用到了列表。首先吧,[y,x]就是个列表,[x>y]呢,是这个列表的下标,(列

表和C语言的数组差不多)在Python中,默认真值为1假值为0,所以当x>y为真的时候呢,即[y,x][1]就是等于x。

更让人懵逼的写法:

        w = (x>y and [a] or [b])[0]

真服能写出这种代码的家伙,咳咳,吓得我赶紧搬我的小板凳过来做笔记。

要明白这个写法的意思,首先要知道“短路原则”是什么。

短路原则:
1.在逻辑运算符and中,如果前面的条件为假,则不继续进行and后面的条件判断;
2.在逻辑运算符or中,如果前面的条件为真,则不继续进行or后面的条件判断。

在Python中呢,

  对于`(x>y and [a] or [b])[0]`来说:
  1. 如果x>y的值为真,则继续判断and后面的条件,显然不管a的值为何,列表[a]都是个真值,此时根据短路原则就不继续判断or后面的条件了,返回true,并且返回[a]也就是列表,此时对其取值,即[a][0]所以此时w == [a][0]

  2. 如果x>y的值为假,则根据短路原则不判断and后面的条件,转而判断or后面的条件,显然[b]是真值,所以此时w == [b][0]

    长见识了,虽然原理很简单,听别人一解释也都懂。但关键是这不是自己想出来的。所以说呢,大神和大傻之间的差别,就差在这里了。

    牛逼的人各有各的牛逼之处,愣头青也有愣头青的瓜皮。学习吧,跟着大佬们的脚步颤抖吧。总有走过来的那一天。

    额,今天讲了什么。。。。。

    1.

        if x > y:
            w = x
        else:
            w = y

2.

        w = x if x > y else y

3.

 w = [y,x][x>y]

4.

        w = (x>y and [a] or [b])[0]

就这么少了,日积月累吧哈。