python列表生成式中添加if和else

目录


原文链接:https://blog.csdn.net/leavemetomorrow/article/details/90641362

  1. 当只有 if 时,列表生成式构造为 [最终表达式 - (范围选择 - 范围过滤)]
>>> [num ** 2 for num in range(10) if num % 2 == 0] 
[0, 4, 16, 36, 64]

如果 if 和 for 的位置调换,则会报错。

>>> [num ** 2 if num % 2 == 0 for num in range(10)]
  File "<stdin>", line 1
    [num ** 2 if num % 2 == 0 for num in range(10)]
                                ^
SyntaxError: invalid syntax
  1. 同时有 if 和 else 时,列表生成式构造为 [最终表达式 - 条件分支判断 - 范围选择]
>>> [num ** 2 if num % 2 == 0 else 0 for num in range(10)]
[0, 0, 4, 0, 16, 0, 36, 0, 64, 0]

如何 if 和 for 的位置调换,则会报错。

>>> [num **2 for num in range(10) if num % 2 == 0 else 0]
  File "<stdin>", line 1
    [num **2 for num in range(10) if num % 2 == 0 else 0]
                                                     ^
SyntaxError: invalid syntax
  1. 高级用法
diff = df[height2] - df[height1]
diff = diff.apply(lambda x: x - 360 if x > 180 else x + 360 if x < -180 else x)

同时处理多列

import numpy as np

# Assuming df is a DataFrame
df = df.apply(lambda col: np.where(col > 180, col - 360, np.where(col < -180, col + 360, col)))

官方文档并没有提及到这个。我就说一下我的理解方法。

1,python解释器看到列表生成式会先找关键字 for,for 后面的部分是为了筛选需要显示的数字,for 前面的表达式则是对这些数字进行进一步加工。

2,当只有 if 而没有 else 时,此时迭代器 range 里面的元素会被筛选,只有偶数才会进行下一步操作;筛选好之后,再进行平方操作。这里if的作用是为了筛选。

3, 当同时有 if 和 else 时,此时迭代器中的所有元素都将会在下一步被处理,然后就是偶数的进行平方,奇数的显示为0。这里 if 和 else 的作用则是为了进行不同条件下的处理。

参考链接
[1] Python中列表生成式中的if和else 2019.5

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值