python3学习笔记(6)_iteration

本文深入讲解了Python中迭代器的概念,包括如何使用for循环进行迭代,如何判断对象是否可迭代及如何将Iterable转换为Iterator。此外,还介绍了生成器的特点及其与迭代器的区别。
 1 #python3 学习笔记17/07/10
 2 # !/usr/bin/env python3
 3 # -*- coding:utf-8 -*-
 4 
 5 #类似 其他语言的for循环,但是比for抽象程度更高
 6 # for ... in 
 7 
 8 #通过collections模块的 Iterable 类型判断一个对象是否可以迭代
 9 from collections import Iterable
10 from collections import Iterator
11 
12 #list 有下标可以迭代,dict 没有下标,也可以迭代
13 d = {"a":1,"b":2,"c":3}
14 #dict 默认是迭代 key的,且dict的迭代结果顺序可能不一样
15 for key in d:
16     print(key)
17 
18 #如果要迭代value ,需这样做
19 for value in d.values():
20     print(value)
21 
22 #如果要同时迭代 key 和 value,可以这样做
23 for key, value in d.items():
24     print(key, value)
25 
26 #判断 字符串'abc' 是否可迭代
27 print(isinstance("abc",Iterable))
28 
29 #判断list 是否可以迭代
30 print(isinstance(['a','b','c'],Iterable))
31 
32 #判断 整数是否可迭代
33 print(isinstance(123,Iterable))
34 
35 #通过enumerate 函数可以把一个list变成  索引-元素对,同时迭代之
36 for i,value in enumerate(['a','b','c'])    :
37     print(i, value)
38 
39 #for循环里同时引用两个变量
40 for x, y in [(1,2),(3,4),(5,6)]:
41     print(x, y)
42 
43 #可以直接作用于for循环的数据类型有以下几种:
44 #一类是集合数据类型,lsit,tuple,dict,set,str
45 #一类是generator,包括生成器和带yield的generator function
46 # 这些可以直接作用于for循环的对象统称为可迭代对象:Iterable
47 # 可以使用 isinstance()判断一个对象是否是 Iterable
48 
49 print(isinstance([],Iterable))#True
50 print(isinstance({},Iterable))#True
51 print(isinstance("abc",Iterable))#True
52 print(isinstance((x for x in range(10)), Iterable))#True
53 print(isinstance(100, Iterable))#False
54 
55 
56 #生成器不但可以作用于 for循环,还可以被 next() 函数不断调用,并返回下一个值,直到最后抛出StropIteration
57 #错误,表示无法继续返回下一个值
58 
59 #可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator
60 
61 #同样可以使用 isinstance() 判断一个对象是否是Iterator对象:
62 print(isinstance((x for x in range(10)), Iterator))#True
63 print(isinstance([], Iterator))#False
64 print(isinstance({}, Iterator))#False
65 print(isinstance("abc",Iterator))#False
66 
67 
68 #可以使用 iter() 函数把 lsit,dict,str等 Iterable变为 Iterator
69 print(isinstance(iter([]), Iterator))#True
70 print(isinstance(iter("abc"), Iterator))#True
71 
72 #Iterator 对象支持 next()函数,并不断返回下一个数据,直到抛出StopIreration错误,这是一个有序的数据流序列,我们不知道序列的长度。但是由于序列是一个一个生成,可以生成无限多个元素,可见,他可以表示所有自然数。而list 是做不到这一点的

 

转载于:https://www.cnblogs.com/wjw-blog/p/7149146.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值