Python进阶——条件表达式和解析语法

第一部分 解析语法

1.1 解析语法的基本结构——[expression for value in iterable if conditihon]

  • 三要素:表达式、可迭代对象、if条件(可选)
  • 执行过程
    (1)从可迭代对象中拿出一个元素
    (2)通过if条件(如果有的话),对元素进行筛选,若通过筛选:则把元素传递给表达式 ;若未通过:则进入(1)步骤,进入下一次迭代
    (3)将传递给表达式的元素,代入表达式进行处理,产生一个结果
    (4)将(3)步产生的结果作为列表的一个元素进行存储
    (5)重复(1)~(4)步,直至迭代对象迭代结束,返回新创建的列表
  • 等价于如下代码
result = []
for value in iterale:
    if condition:
        result.append(expression)

1.2 解析语法构造列表(也称为列表推导)

  • 求20以内奇数的平方
squares = []
for i in range(1,21):
    if i%2 == 1:
        squares.append(i**2)
print(squares)   
[1, 9, 25, 49, 81, 121, 169, 225, 289, 361]
squares = [i**2 for i in range(1,21) if i%2 == 1]
print(squares) 
[1, 9, 25, 49, 81, 121, 169, 225, 289, 361]

支持多变量

x = [1, 2, 3]
y = [1, 2, 3]

results = [i*j for i,j in zip(x, y)]
print(results)
[1, 4, 9]

支持循环嵌套

colors = ["black", "white"]
sizes = ["S", "M", "L"]
tshirts = ["{} {}".format(color, size) for color in colors for size in sizes]
print(tshirts)
['black S', 'black M', 'black L', 'white S', 'white M', 'white L']

1.3 解析语法构造字典(字典推导)

squares = {i: i**2 for i in range(10)}
print(squares)
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

1.4 解析语法构造集合(集合推导)

squares = {i**2 for i in range(10)}
print(squares)
{0, 1, 64, 4, 36, 9, 16, 49, 81, 25}

1.5 生成器表达式

  • 元组推导是不存在的,圆括号是生成器推导
colors = ["black", "white"]
sizes = ["S", "M", "L"]
tshirts = ("{} {}".format(color, size) for color in colors for size in sizes)
print(tshirts)
for tshirt in tshirts:
    print(tshirt)
<generator object <genexpr> at 0x00000259EBD66EC8>
black S
black M
black L
white S
white M
white L

第二部分 条件表达式——expr1 if condition else expr2

  • 如果条件成立,就执行expr1,否则执行expr2
  • 将变量n的绝对值赋值给变量x
n = -10
if n >= 0:
    x = n
else:
    x = -n
print(x)
10
n = -10
x = n if n>= 0 else -n
print(x)
10

条件表达式和解析语法简单实用、运行速度相对更快一些,相信大家会慢慢的爱上它们。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值