第四周练习 part4 --- 可迭代、迭代器

 1 # 可迭代的数据类型 和 迭代器
 2 
 3 from collections import Iterator
 4 from collections import Iterable
 5 '''可作用于 for 循环的对象都可迭代
 6 可作用于 next() 函数的都是迭代器'''
 7 
 8 # 列表、字典、元组都可迭代,但都不是迭代器
 9 print('列表、字典、元组、字符串可迭代吗?')
10 print(isinstance([], Iterable))
11 print(isinstance({}, Iterable))
12 print(isinstance((), Iterable))
13 print(isinstance('abc', Iterable))
14 # 生成器一定可迭代
15 print('生成器可迭代吗?')
16 print(isinstance((i for i in range(10)), Iterable))
17 # 生成器还一定是迭代器
18 print('列表、元组、字典是迭代器吗?')
19 print(isinstance((), Iterator))
20 print(isinstance([], Iterator))
21 print(isinstance({}, Iterator))
22 print('生成器一定是迭代器吗?')
23 print(isinstance((i for i in range(10)), Iterator))
24 
25 a = [1, 2, 3]
26 b = iter(a)  # 将列表变成迭代器
27 print(b.__next__())  # 迭代器才能用 next 方法
28 print(next(b))
 1 # 匿名函数
 2 
 3 clac = lambda a: print(a)
 4 clac(9)
 5 
 6 clac1 = lambda a:4 if a<4 else a
 7 print(clac1(1))
 8 
 9 # filter_筛选
10 res = filter(lambda n: n>5, range(10))  # range(10)是一个列表,filter将列表里大于5的数筛选出来
11 for i in res:
12     print(i)
13 
14 # map_处理
15 res1 = map(lambda n: n*n, range(10))  # 将列表里的所有数进行处理
16 for i in res1:
17     print(i)
18 
19 # reduce_
20 import functools
21 res2 = functools.reduce(lambda x, y: x*y, range(1, 5))
22 print(res2)

 

posted @ 2018-04-04 18:59  Lief_1997  阅读(152)  评论(0)    收藏  举报