【《流畅的python》的2.2节的学习笔记】

前言

本文为《流畅的python》的2.2节的学习笔记。

列表推导式

代码展示

#ord函数说明:Return the Unicode code point for a one-character string.

symbols = '$¢£¥€¤'
code = []
for symbol in symbols:
    code.append(ord(symbol))
print(code)

>>>[36, 162, 163, 165, 8364, 164]

说明:
此段代码作用是把一个字符串变成Unicode 码位的列表。


symbols = '$¢£¥€¤'
code1 = [ord(symbol) for symbol in symbols]
print(code1)

>>>[36, 162, 163, 165, 8364, 164]

说明:
以列表推导式重写以上代码。

列表推导式的使用原则:
通常的原则是,只用列表推导来创建新的列表,并且尽量保持简短。如序列构成的数组果列表推导的代码超过了两行,你可能就要考虑是不是得用for 循环重写了。

当所写的列表推导式太长时,可读性会大幅较低,可以使用以下Python语法提高可读性: **Python 会忽略代码里[]、{} 和() 中的换行,因此如果你的代码里有多行的列表、列表推导、生成器表达式、字典这一类的,可以省略不太好看的续行符**。

# beyond_ascii = [ord(s) for s in symbols if ord(s) >127]

symbols = '$¢£¥€¤'
beyond_ascii = [ord(s)
                for s in symbols
                    if ord(s) >127]
print(beyond_ascii)

>>>[162, 163, 165, 8364, 164]

说明:
将一个长列表推导式分行为以上样式,可读性大大提高。
此代码对每个输出的Unicode码数值做了过滤,Unicode码数值需大于127才添加到列表。


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

>>>[('black', 'S'), ('black', 'M'), ('black', 'L'), ('white', 'S'), ('white', 'M'), ('white', 'L')]

说明:
此段代码作用是以颜色和大小以列表推导式推导组合。

生成器表达式

生成器表达式的语法跟列表推导差不多,只不过把方括号换成圆括号而已。

代码展示


for tshirt in ('%s %s' % (color, size)
                for color in colors
                    for size in sizes) :
    print(tshirt)

>>>black S
black M
black L
white S
white M
white L

说明:
此段代码作用是以颜色和大小以生成器表达式推导组合。
生成器表达式逐个产出元素,不会一次性产出一个含有6 个T 恤样式的列表。当数据量很大时,如1000*1000个元素生成列表时,生成器表达式可以节省很大的内存。

总结

  • 列表推导式

清楚列表推导式的使用原则,同时注意其可读性。

  • 生成器表达式

当数据量很大时,使用生成器表达式而不是列表推导式,可以节省很大的内存。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值