ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

迭代器

2019-07-29 19:50:29  阅读:164  来源: 互联网

标签:迭代 Iterator next print isinstance Iterable


 1 '''
 2 可迭代对象:
 3 概念:可以直接作用于for循环的对象,叫做可迭代对象[Iterable]
 4 判断方式:判断一个对象是否为可迭代的对象:isinstance(obj, Iterable)
 5 可以直接作用于for的对象:
 6 1、基本数据类型:list  tuple dict set string
 7 2、generator生成器:带有yield的生成器函数
 8 '''
 9 
10 # Iterable 如果使用,需要从collections.abc模块中导入
11 from collections.abc import Iterable
12 # 判断以后个对象是否为可迭代对象
13 print(isinstance([], Iterable))   # T
14 print(isinstance("", Iterable))   # T
15 print(isinstance((), Iterable))   # T
16 print(isinstance({}, Iterable))   # T
17 print(isinstance(100, Iterable))   # False
18 # x for x in range(3)  --> 产生一个列表,列表的数量根据range确定,列
19 # 表的值,根据for前面的内容确定
20 print(isinstance((x for x in range(3)), Iterable))   # True
21 
22 
23 '''
24 迭代器:
25 概念:不仅可以作用于for循环,也可以使用next() 函数不断调用并
26 获取下一个值,直到取出最后一个。当取出最后一个元素时,
27 再继续调用next()时,会提出一个StopIteration错误表示无法继续
28 下一个数据的提取。
29 可以被next()函数调用并提取元素的对象称为迭代器对象。
30 判断一个对象是否为迭代器对象:isinstance(obj, Iterator)
31 '''
32 print('************************华丽丽的分割线*********************')
33 from collections.abc import Iterator
34 print(isinstance([], Iterator))   # F
35 print(isinstance("", Iterator))   # F
36 print(isinstance((), Iterator))   # F
37 print(isinstance({}, Iterator))   # F
38 print(isinstance(100, Iterator))   # F
39 print(isinstance((x for x in range(3)), Iterator))   # True
40 
41 li = (x for x in range(3))   # <generator object <genexpr> at 0x0000021950E1F9A8>
42 # print(li)
43 print('0000000000000000000000000')
44 # for i in li:
45 #     print(i)
46 print(next(li))
47 print(next(li))
48 print(next(li))
49 # 如果使用next提取元素,当元素全部提取结束,再提取时,
50 # 返回StopIteration错误
51 # print(next(li))   # StopIteration
52 
53 li1 = [1,2,3]
54 # for i in li1:
55 #     print(i)
56 # print(next(li1))   # TypeError: 'list' object is not an iterator
57 
58 # 将list  dict  tuple  set  string 强转为迭代器   iter(obj)
59 li2 = [100, 200, 300]
60 iter1 = iter(li2)
61 print(iter1)
62 print(type(iter1))
63 print(next(iter1))  # 100
64 
65 print(isinstance(iter([]), Iterator))
66 print(isinstance(iter(()), Iterator))
67 print(isinstance(iter({}), Iterator))
68 print(isinstance(iter(""), Iterator))
69 # print(isinstance(iter(100), Iterator))  # 强转失败

 

标签:迭代,Iterator,next,print,isinstance,Iterable
来源: https://www.cnblogs.com/BKY88888888/p/11266043.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有