发表于: 2018-03-08 23:06:59

1 810


今天学的东西:迭代 ,列表生成式,生成器,迭代器

1.迭代

 list,tuple,dict, 都是可迭代对象 都能被for 遍历

字典key的迭代

d = {'a' : 1,'b' : 2,'c' : 3}

for x in d:

    print(x)

....a

....b

....c

字典 value的迭代

for y in d.values():

    print(y)

....1

....2

....3

字典 key-value的迭代

for k,y in d.items():

    print(k,y)

....a  1

....b  2

....c  3

enumerate函数  可以把list 变成 索引- value

for x,y in enumerate(['A','B','C']):

    print(x,y)

....0 A

....1 B

....2 C

廖雪峰的小练习: 使用迭代查找一个list中最小和最大值,并返回一个tuple:


输出

2.列表生成式

用列表生成式代表循环 创建list

生成 1*1 ,2*2 ,3*3  ........... 10*10

[x*x for x in range(1,11)]


还可加 判断条件    比如只取 奇数 平方

 [x*x for x in range(1,11) if x%2 != 0]


还可以使用双层循环

L = [x+y for x in '123' for y in 'abc']

print(L)

....1a

....2b

....3c


列出当前目录下所有文件

import os

[d for d in os.listdir('.')]


列表生成式也可以用两个变量

d = {'a':1,'b':2,'c':3}

L=[x+'+'+y for x,y in d.items()]

print(L)

....'a'+1

....'b'+2

....'c'+3


练习

L1 = ['Hello','World',88,'my',None]

L2 = [x for x in L1 if isinstance(x,str)] 

print(L2)

....['Hello','World','my']


3.生成器

一边循环一边 计算     generator  函数   

创建 generator 要把列表生成式的[] 改成 ()

g=(x*x for x in range(1,11))

next(g)

1

next(g)

4

...

...

...

next(g)

100

不能超过g的值


用for循环

g=(x*x for x in range(1,11))

for  n in g:

    print(n)

....1,4,9.......100


遇到的问题  :斐波拉契数列        有点 似懂非懂     杨辉三角 完全没看懂。。。。。明天再看。


4.迭代器

list  tuple  dice  是迭代对象 (iterable) 而不是 迭代器 (iterator)

可以作用 for循环的 都是  iterable    

可以通过next()的都是iterator

所有iterable都可以通过 iter()函数 变成 iterator









返回列表 返回列表
评论

    分享到