result = 为True时的结果 if 判断条件 else 为False时的结果1.2 例子
# 1. 最朴素的用法 >>> a = 10 >>> b = 20 >>> res = a if a < b else b >>> res 10 # ----------------------- # 2. 定义函数时使用 >>> def max(x, y): ... return x if x >=y else y ... >>> max(1, 2) 2 >>> max(2, 1) 2 # 3. 和lambda表达式结合 >>> f = lambda x,y: x - y if x >= y else y - x >>> f(1, 2) 1 >>> f(2, 1) 1 # 4. 结合列表推导使用 >>> # 0 and 1 represent even and odd number respectively >>> [0 if i % 2 == 0 else 1 for i in range(10)] [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]2. lambda表达式 2.1 语法
lambda 参数1, 参数2: 函数具体运算规则(返回值)2.2 例子
>>> def sum(x, y): ... return x + y ... >>> sum(10, 20) 30 >>> (lambda x,y: x+y)(10, 20) >>> f = lambda x,y: x+y >>> f(10, 20) 30 # 结合三元运算符 >>> f = lambda x,y: x - y if x >= y else y - x >>> f(1, 2) 1 >>> f(2, 1) 1
匿名函数lambda:是指一类无需定义标识符(函数名)的函数或子程序。
lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值。
对于单行代码函数,使用 lambda 表达式可省去定义函数的复杂过程,让代码更加简洁。
对于无需多次使用的函数,由于lambda 表达式在用完之后立即释放的特点,提升了程序性能
# 1. 列表推导式
[表达式 for 迭代变量 in 可迭代对象 [if 条件表达式]] # [if 条件表达式] is optional
# 等价于
x = []
for 迭代变量 in 可迭代对象:
if 条件表达式:
x.append(表达式)
# 2. 字典推导式
{key: value for (key, value) in iterable [if 条件表达式]}
3.2 例子
# 1.1 普通用法
>>> x = [i*i for i in range(10)]
>>> x
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> x = [i for i in range(10) if i % 2 == 0]
>>> x
[0, 2, 4, 6, 8]
# 1.2 结合lambda表达式
>>> [i**2 if i%2==0 else i**3 for i in range(10)]
[0, 1, 4, 27, 16, 125, 36, 343, 64, 729]
# 1.3 多个for循环
>>> [(x, y) for x in range(5) for y in range(4)]
[(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3), (3, 0), (3, 1), (3, 2), (3, 3), (4, 0), (4, 1), (4, 2), (4, 3)]
# 1.4
>>> a = [30, 12, 66, 34, 39, 78, 36, 57, 121]
>>> b = [3, 5, 7, 11]
>>> res = [(x, y) for x in b for y in a if y % x == 0]
>>> res
[(3, 30), (3, 12), (3, 66), (3, 39), (3, 78), (3, 36), (3, 57), (5, 30), (11, 66), (11, 121)]
# 2.1 普通用法
>>> temp_dict = {"Key_1": "Value_1", "Key_2": "Value_2", "Key_3": "Value_3"}
>>> {(key,value) for (key, value) in temp_dict.items()}
{('Key_1', 'Value_1'), ('Key_3', 'Value_3'), ('Key_2', 'Value_2')}
# 2.2 互换key和value的位置
>>> {value: key for (key, value) in temp_dict.items()}
{'Value_1': 'Key_1', 'Value_2': 'Key_2', 'Value_3': 'Key_3'}
# 2.3 结合zip函数
>>> list_1 = ["A", "B", "C", "D"]
>>> list_2 = ["aa", "bb", "cc", "dd"]
>>> {i:j for i,j in zip(list_1, list_2)}
{'A': 'aa', 'B': 'bb', 'C': 'cc', 'D': 'dd'}



