Python笔记《6》

python核心编程

第8章

8.12 列表解析

[expr  for iter-var in iterable]

>>> [x**2 for x in range(6)]
[0, 1, 4, 9, 16, 25]
>>> 

扩展

[expr  for iter-var in iterable if cond-expr]

>>> [x for x in seq if x%2]
[1, 3, 5, 9, 11, 33, 45]
>>> 

矩阵例子,迭代一个3行5列的矩阵

>>> [(x+1,y+1) for x in range(3) for y in range(5)]
[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5)]
>>> 

检查文件中字符数

>>> f = open('LICENSE.txt','r')
>>> len([word for line in f for word in line.split() ])
4644
>>> len([word for line in f for word in line.split()])
0
>>> f = open('LICENSE.txt','r')
>>> len([word for line in f for word in line.split()])
4643
>>> 

f.seek(0)#  返回文件头

8.13生成器表达式(列表解析的扩展)

列表解析:

[expr for iter-var in iterable if cond-expr]

生成器

(expr for iter-var in iterable if cond-expr)

区别:列表在循环后会创建一个比较大的列表。

>>> rows = [1,2,3,17]
>>> def cols():
yield 56
yield 2
yield 1

>>> x_product_pairs = ((i,j) for i in rows for j in cols())
>>> for pair in x_product_pairs:
print(pair)

(1, 56)
(1, 2)
(1, 1)
(2, 56)
(2, 2)
(2, 1)
(3, 56)
(3, 2)
(3, 1)
(17, 56)
(17, 2)
(17, 1)
>>> 

这里面的yield好像是关键字。这里把cols()函数可以当做列表处理。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值