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)