发表于: 2018-03-08 23:06:59
1 940
今天学的东西:迭代 ,列表生成式,生成器,迭代器
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
评论