## Python列表生成式和生成器 原

p
peizh

1、 生成式

```li = [x*x for x in xrange(1,10) if x%2 == 0]
print(li)```

[4, 16, 36, 64]

```def funa():

a = []

for x in xrange(1,10):

if x%2 == 0:

a.append(x*x)

return a

print(funa())```

[4, 16, 36, 64]

2、 生成器

#列表生成器

#1. 最简单的方法，把原来的生成式的[]换成()就OK了

```lt = (x * x for x in xrange(1,101) if x % 2 == 0)

print(lt)

print(type(lt))

print(lt.next())

print(lt.next())

print(lt.next())

print(lt.next())```

<generator object <genexpr> at 0x03161A80>

<type 'generator'>

4

16

36

64

```# for i in lt:

#     print(i)```

#2. 函数中定义列表生成器

```def fib(n):

sum = 0

i = 0

while(i<n):

sum = sum + i

i+=1

# print(sum)

yield (sum)

fib(10)

print(type(fib(10)))```

<type 'generator'>

```# for i in fib(10):

#     print(i)```

For循环结果：

0

1

3

6

10

15

21

28

36

45

3、 用函数实现9*9乘法口诀

```def sumsum(i):

if i >=1:

sumsum(i - 1)

print(['%d * %d = %d' %(j, i, j*i) for j in xrange(1,i+1)])

sumsum(9)```

['1 * 1 = 1']

['1 * 2 = 2', '2 * 2 = 4']

['1 * 3 = 3', '2 * 3 = 6', '3 * 3 = 9']

['1 * 4 = 4', '2 * 4 = 8', '3 * 4 = 12', '4 * 4 = 16']

['1 * 5 = 5', '2 * 5 = 10', '3 * 5 = 15', '4 * 5 = 20', '5 * 5 = 25']

['1 * 6 = 6', '2 * 6 = 12', '3 * 6 = 18', '4 * 6 = 24', '5 * 6 = 30', '6 * 6 = 36']

['1 * 7 = 7', '2 * 7 = 14', '3 * 7 = 21', '4 * 7 = 28', '5 * 7 = 35', '6 * 7 = 42', '7 * 7 = 49']

['1 * 8 = 8', '2 * 8 = 16', '3 * 8 = 24', '4 * 8 = 32', '5 * 8 = 40', '6 * 8 = 48', '7 * 8 = 56', '8 * 8 = 64']

['1 * 9 = 9', '2 * 9 = 18', '3 * 9 = 27', '4 * 9 = 36', '5 * 9 = 45', '6 * 9 = 54', '7 * 9 = 63', '8 * 9 = 72', '9 * 9 = 81']

p

### peizh

python生成式生成器详细解答

Python得yield关键字，yield是python中的生成器 了解生成器需要先了解什么是生成式，切片的目的是从已有的列表中切出一部分返回，而生成式的目的则是从无到有的构建一个列表 一个生成式的案例...

2015/07/21
88
0
python（六）切片，生成式，生成器，迭代

Koma
2015/01/20
2K
0
Python迭代器生成器,私有变量及列表字典集合推导式(二)

1 python自省机制 这个是python一大特性,自省就是面向对象的语言所写的程序在运行时,能知道对象的类型,换句话说就是在运行时能获取对象的类型,比如通过 type(),dir(),getattr(),hasattr(),i...

2018/06/11
0
0
python——高级特性（2）

2018/05/04
0
0
Supporting Python 3(支持python3)——使用现代的风格改善你的代码

2015/10/26
130
0

STM32进阶之串口环形缓冲区实现

25分钟前
10
0

29分钟前
9
0
017、xml版本代码生成器配置

1、在pom.xml文件中增加mybatis-generator-maven-plugin插件 <build> <plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>......

41分钟前
7
0

49分钟前
6
0
Git ssh配置

JUKE
57分钟前
6
0