Python“语法糖”——列表解析式(List Comprehension)

Python“语法糖”——列表解析式(List Comprehension)

1. 前言
最近在利用Python学习网络爬虫,由于之前一直使用C++编程,因此对于Python特有的一些语法知识不是很熟,比如今天要写到的列表解析式就让我很费解,好在经过查阅资料,总算明白了该语法。
此外,列表解析是一种“语法糖”,编译器会优化,不会因为简写而影响效率,反而优化提升效率;减少代码量,可读性强,工作量降低,减少出错…

2. 语法

(1)基本语法

[ 返回值  for  元素  in  可迭代对象  if  条件 ]

其中:“[ ]”内固有的是 for 循环,if 条件语句可选;
返回值:返回一个列表。

(2)进阶语法

[表达式  for  元素  in  迭代对象1  if  条件语句1  if 条件语句2]

与其等价的Python自然语句为:

res = []
for  元素  in  迭代对象1:
     if  条件语句1:
          if  条件语句2:
              res.append(表达式)

示例:
实现:20以内能被2整除又能被3整除的数

         [i for i in range(20) if i%2==0 and i%3==0]

or

         [i for i in range(20) if i%2==0 if i%3==0]

(3)多层循环

[表达式 for 元素1 in 迭代对象1 for 元素2  in 迭代对象2]

与其等价的Python自然语句为:

res = []
for 元素1 in 迭代对象1:
    for 元素2 in 迭代对象2:
        res.append(表达式)

示例:

[(x,y) for x in 'abcde' for y in range(3)]
[(x,y) for x in 'abcde' for y in range(3)]
[(x,y) for x in 'abcde' for y in range(3)]
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

视觉闫小亘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值