Skip to content

Commit f35467f

Browse files
committed
sum-generator
1 parent b8b50b8 commit f35467f

File tree

2 files changed

+39
-4
lines changed

2 files changed

+39
-4
lines changed

README.md

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,34 @@
22

33
告别枯燥,60秒学会一个小例子!
44

5-
感谢群友Brook等人的贡献,欢迎关注github库:Python小例子
5+
目前已发布Python小例子1.0 pdf版本,包括:Python之基,Python之正,Python之例,Python之能四个大章节,共计138个例子。
66

7-
https://github.com/jackzhenguo/python-small-examples
7+
### 今日更新
88

9+
Python中的聚合类函数`sum`,`min`,`max`第一个参数是`iterable`类型,一般使用方法如下:
910

11+
```python
12+
a = [4,2,5,1]
13+
sum([i+1 for i in a]) # 16
14+
```
1015

11-
目前已发布Python小例子1.0 pdf版本,包括:Python之基,Python之正,Python之例,Python之能四个大章节,共计138个例子。
16+
使用列表生成式`[i+1 for i in a]`创建一个长度与`a`一行的临时列表,这步完成后,再做`sum`聚合。
17+
18+
试想如果你的数组`a`长度十百万级,再创建一个这样的临时列表就很不划算,最好是一边算一边聚合,稍改动为如下:
1219

20+
```python
21+
a = [4,2,5,1]
22+
sum(i+1 for i in a) # 16
23+
```
24+
25+
此时`i+1 for i in a``(i+1 for i in a)`的简写,得到一个生成器(`generator`)对象,如下所示:
1326

27+
```python
28+
In [8]:(i+1 for i in a)
29+
OUT [8]:<generator object <genexpr> at 0x000002AC7FFA8CF0>
30+
```
1431

15-
此PDF是开源文档,欢迎传播,希望真正帮助到大家,但不能用于商业目的
32+
生成器每迭代一步吐出(`yield`)一个元素并计算和聚合后,进入下一次迭代,直到终点
1633

1734

1835

md/计算聚合同时算.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
Python中的聚合类函数`sum`,`min`,`max`第一个参数是`iterable`类型,一般使用方法如下:
2+
```python
3+
a = [4,2,5,1]
4+
sum([i+1 for i in a]) # 16
5+
```
6+
使用列表生成式`[i+1 for i in a]`创建一个长度与`a`一行的临时列表,这步完成后,再做`sum`聚合。
7+
8+
试想如果你的数组`a`长度十百万级,再创建一个这样的临时列表就很不划算,最好是一边算一边聚合,稍改动为如下:
9+
```python
10+
a = [4,2,5,1]
11+
sum(i+1 for i in a) # 16
12+
```
13+
此时`i+1 for i in a``(i+1 for i in a)`的简写,得到一个生成器(`generator`)对象,如下所示:
14+
```python
15+
In [8]:(i+1 for i in a)
16+
OUT [8]:<generator object <genexpr> at 0x000002AC7FFA8CF0>
17+
```
18+
生成器每迭代一步吐出(`yield`)一个元素并计算和聚合后,进入下一次迭代,直到终点。

0 commit comments

Comments
 (0)