我有一个包含链接的列表,并试图过滤那些链接并被卡住。我能够为多个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
开头的链接。
如果上面给出的列表理解中的条件如何写?任何帮助表示赞赏。
答案 0 :(得分:1)
您可以将两个条件与and
结合使用-但列表推导功能还支持多个if
(使用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')
]
(请注意,为了清楚起见,将它们缩进,[
和]
之间的空格并不重要)