python - 列表理解中的多个 if 条件
问题描述
我有一个包含链接的列表,并试图过滤这些链接并卡住了。我能够显式地为多个 if 语句编写一个函数,但希望直接在列表理解中编写它。
我尝试了多种方法(i.startswith(), "https" in i)
来编写它,但无法弄清楚。
这是列表理解:
[i.a.get('href') for i in link_data if i != None]
输出:
['/gp/redirect.html/ref=as',
'https://www.google.com/',
'https://www.amazon.com/',
'/gp/redirect.html/ref=gf']
我只需要以 . 开头的链接https
。
如果条件在上面给出的列表理解中,我该如何写?任何帮助表示赞赏。
解决方案
您可以将两个条件与and
-- 结合使用,但列表推导也支持多个if
s(使用 s 进行评估and
)
这是您想要的两个选项:
# combining conditions with `and`
output = [
i.a.get('href') for i in link_data
if i is not None and i.a.get('href').startswith('https')
]
# combining conditions with multiple `if`s
output = [
i.a.get('href') for i in link_data
if i is not None
if i.a.get('href').startswith('https')
]
(注意这些是为了清楚起见而缩进的,[
和之间的空格]
并不重要)
推荐阅读
- macos - 在 Jupyter Lab markdown 中渲染数学公式的问题
- ios - 是否可以在使用一个等值对象字段的对象数组上使用包含?
- python - “charmap”编解码器无法解码位置 4836 中的字节 0x9d:字符映射到
- javascript - 显示结果不显示
- java - Java Mongodb 将正则表达式匹配到任何文档字段
- r - 将字符串作为列名传递时出错 R t 测试
- reactjs - 如何在 React JSx 中多次重复一个图像以填满一个页面?
- python - 时间戳对象没有属性 dt
- json - Contentful .NET SDK Newtonsoft.Json.JsonReaderException 将 JSON 反序列化为 POCO
- python - mac (10.15.5) 上 pyzmail 的 pip 安装错误