Python 2.5新增的if...else条件表达式

标签:Python

今天看《What’s New in Python 2.5》时,发现了一个有趣的新语法,可以模拟C中的c ? x : y(之前是用and...or来模拟,代码读起来不够直观)。

演示如下:
>>> a = 1 if 2 == 3 else 4
>>> a
4
>>> isLeapYear = lambda year: not (year % 4 if year % 100 else year % 400) # 判断闰年
>>> isLeapYear(1234)
False
>>> isLeapYear(1236)
True
>>> isLeapYear(1000)
False
>>> isLeapYear(2000)
True
>>> [i + 1 if i % 2 for i in xrange(10)] # 不能省略else
  File "<stdin>", line 1
    [i + 1 if i % 2 for i in xrange(10)]
                      ^
SyntaxError: invalid syntax
>>> [i + 1 if i % 2 else i for i in xrange(10)]
[0, 2, 2, 4, 4, 6, 6, 8, 8, 10]
>>> [i % 2 and i + 1 or  i for i in xrange(10)] # 之前的语法
[0, 2, 2, 4, 4, 6, 6, 8, 8, 10]
不过还是Ruby更方便~

0条评论 你不来一发么↓

    想说点什么呢?