迭代器

C++ vector容器讲解

回眸只為那壹抹淺笑 提交于 2019-12-04 18:45:10
一、什么是vector? 向量vector是一个封装了动态大小数组的顺序容器(sequence container).和任意其他类型容器一样,它能够存放各种类型的对象,即向量是一个能够存放任意类型的动态数组。 二、容器特性 1.顺序序列 顺序容器中的元素按照严格的线性顺序排序。可以通过元素在序列中的位置访问对应的元素。 2.动态数组 支持对序列中的任意元素进行快速直接访问,甚至可以通过指针算述进行该操作。操供了在序列末尾相对快速地添加/删除元素的操作。 3.能够感知内存分配器的(Allocator-aware) 容器使用一个内存分配器对象来动态地处理它的存储需求。 三、基本函数实现 1.构造函数 vector():创建一个空vector vector(int nSize):创建一个vector,元素个数为nSize vector(int nSize,const t& t):创建一个vector,元素个数为nSize,且值均为t vector(const vector&):复制构造函数 vector(begin,end):复制[begin,end)区间内另一个数组的元素到vector中 2.增加函数 void push_back(const T& x):向量尾部增加一个元素X iterator insert(iterator it,const T& x)

第五周课堂笔记1th

限于喜欢 提交于 2019-12-04 16:04:10
可迭代对象 Isinstance 判断一个对象是否属于某种类型 接受两个参数 迭代器 以下数据类型都没迭代器: 把没有迭代器的类型更改为有迭代器类型 用迭代器进行取值: 判断迭代器的方法: 3. 转义字符 用转义序列代表特殊字符 字符串字面值中用字符反斜杠  \ 后跟一些字符代表特殊的一个字符 转义字符表: \ ’   代表一个单引号 \ ”   代表一个双引号 \n    代表一个换行符 \    代表一个反斜杠 \r    返回光标至行首(从行首开始覆盖) \t    水平制表符 \f    换页 \v    垂直制表符 \b    倒退(倒退一个字符开始覆盖) \0    字符串,字符值为 0 (空) \0oo     oo 为两位八进制表示的字符 \xXX     XX 为两位十六进制表示的字符 \uXXXX     Unicode 16 的十六进制的字符 \UXXXXXXXX     Unicode 32 的十六进制表示的字符 ### 小方法: 异常处理 Exception :万能出错(出现所有的错误都不会报错) 来源: https://www.cnblogs.com/peiw/p/11872808.html

itertools:处理可迭代对象的模块

こ雲淡風輕ζ 提交于 2019-12-04 15:53:52
合并和分解迭代器 chain chain可以接收多个可迭代对象(或者迭代器)作为参数,最后返回一个迭代器。 它会生成所有输入迭代器的内容,就好像这些内容来自一个迭代器一样。 类似于collections下的ChainMap,可以合并多个字典。chain可以合并多个可迭代对象 import itertools c = itertools.chain([1, 2, 3], "abc", {"k1": "v1", "k2": "v2"}) # 直接打印的话是一个对象 print(c) # <itertools.chain object at 0x00000000029745F8> for i in c: print(i, end=" ") # 1 2 3 a b c k1 k2 # 还可以使用chain.from_iterable,参数接收多个可迭代对象组成的一个可迭代对象 c = itertools.chain.from_iterable([[1, 2, 3], "abc", {"k1": "v1", "k2": "v2"}]) for i in c: print(i, end=" ") # 1 2 3 a b c k1 k2 zip_longest 从名字上能看出来,这似乎和内置的zip有关系。确实如此,就是将多个可迭代对象对应位置的元素组合起来,像拉链(zip)一样

集合--Collection与迭代

徘徊边缘 提交于 2019-12-04 14:26:28
1.1Collection 集合 集合:集合是Java提供的一种容器技术,可以用来存储多个数据 集合与数组的区别: 数组的长度是固定的,集合的长度是可变的 数组中存储的是同类型的元素,存储基本数据类型值,集合存储对象, 而且对象的类型可以不一致,在开发中一般当对象多的时候,使用集合进行存储。 1.2集合框架 Java 提供了满足各种API,在使用这些 API 前,首先了解其继承与接口的操作架构, 才能了解何时才有哪个类,以及类之间如何彼此合作,从而灵活运用。 集合按其存储结构可以分为两大类:单列集合 java.util.Collection 和双列集合 java.util.Map Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它由两个重要 的子接口,分别是:java.util.List 和 java.util.Set。其中,List 的特点是:元素有序(会按照 添加的顺序进行元素的输出),而且可以重复(重复指的是内容一致);Set 的特点是: 元素无序(输出时无序),而且元素不可以重复,存放在 java.util 包。 1:List 接口的主要实现类:  java.util.ArrayList java.util.LinkedList  2:Set 接口的主要实现类:  java.util.HashSet  java.util

迭代器基础

牧云@^-^@ 提交于 2019-12-04 14:15:21
#生成器都是迭代器 ,迭代器不一定是生成器#list,tuple,sict,string:Iterable(可迭代对象)#什么是迭代器?#满足两个条件:1有iter方法 2有next方法a = [1,2,3,4,]b= a.__iter__()print(b) #<list_iterator object at 0x000000000270B4C8>print(next(b))print(next(b))print(next(b))print(next(b))#print(next(b)) #StopIteration# for循环做的:# 1 调用可迭代对象的iter方法返回一个迭代器对象# 2 不断调用迭代器对象next方法# 3 处理 StopIterationfor i in [1,2,3,4]: #不能直接对这个列表使用next方法 # iter([1,2,3,4]) #加了iter就可以了 print(i)from collections import Iterable,Iterator #print(isinstance(a,list)) #True 判断a 是不是列表print(isinstance(a,Iterable)) #True 判断a是不是可迭代对象print(isinstance(a,Iterator)) #False 判断a是不是迭代器print

叠加装饰器 迭代器

喜你入骨 提交于 2019-12-04 13:33:04
叠加装饰器: ​ 在同一个被装饰对象中,添加多个装饰器,并执行 @装饰1 @装饰2 @装饰3 def 被装饰对象(): ​ pass 注意:装饰器在调用被装饰对象是才会添加的功能 叠加装饰器: ​ -- 装饰器的顺序:由下到上 ​ --执行的顺序:由下到上 注意:无论inner中出现任何判断,最后都要返回“调用后的被装饰对象” func(*args, **kwargs) 有参装饰器: ​ 本质上是在无参装饰器上套了一个外层函数 ​ 无参装饰器可以引用外层函数的名字 应用: 用户权限的认证 迭代器 迭代器: ​ 迭代取值的工具 迭代: ​ 迭代指的是重复迭代,每一次迭代都是基于上一次的结果而产生 迭代器: ​ 迭代器指的是迭代取值的工具,它可以迭代取值 如果想要知道python中迭代器是什么,首先需要先知道什么是可迭代对象? 可迭代对象: ​ 所有的序列类型:str(字符串)、list(列表)、tuple(元祖)、dict(字典)、set(集合)、f(文件) ​ 凡是内部有 __ iter__ () 方法的都是可迭代对象 可迭代对象: 通过可迭代对象 __ iter __ (),得到的返回值就是“迭代器对象” 迭代器是迭代取值的工具,作用是迭代取值 获取迭代器: list1 = [1,2,3] #调用__iter _ ()会得到一个返回值,该返回值就是一个迭代器对象 ​ iter

迭代器

独自空忆成欢 提交于 2019-12-04 11:59:42
迭代器 迭代器:迭代的工具。迭代是更新换代,如你.爷爷生了你爹,你爹生了你,迭代也可以说成是重复,并且但每一次的重复都是基于上一次的结果来的。如计算机中的迭代开发,就是基于软件的上一个版本更新。以下代码就不是迭代,它只是单纯的重复 while True: print('*'*10) 一、可迭代对象 python中一切皆对象,如 x = 1 name = 'nick' lis = [1, 2] tup = (1, 2) dic = {'name': 'nick'} s1 = {'a', 'b'} def func(): pass f = open('49w.txt', 'w', encoding='utf-8) 对于这一切的对象中,但凡有 __iter__ 方法的对象,都是可迭代对象。 # x = 1.__iter__ # SyntaxError: invalid syntax # 以下都是可迭代的对象 name = 'nick'.__iter__ lis = [1, 2].__iter__ tup = (1, 2).__iter__ dic = {'name': 'nick'}.__iter__ s1 = {'a', 'b'}.__iter__ f = open('49w.txt', 'w', encoding='utf-8') f.__iter__ f.close() 1.1

python高级

荒凉一梦 提交于 2019-12-04 11:55:30
python高级 和is的使用 is 判断地址 比较两个引用是否指向了同一个对象(引用比较) 判断值 比较两个对象是否相等 深拷贝和浅拷贝 深拷贝 返回拷贝过的新对象 是对于一个对象所有层次的拷贝(递归) 浅拷贝 两个变量指向同一地址 是对于一个对象的顶层拷贝 拷贝的是引用 动态语言 运行时可以修改类和对象的内容,有__slots__约束属性值 生成器 generator 定义 在Python中,这种一边循环一边计算的机制,称为生成器 生成式 可对返回的值进行加工 yield 返回当前值,暂停 send 发送一个值 协程 两个方法交替执行,模拟多任务实现方式之一 迭代器 iterator 定义 迭代是访问集合元素的一种方式。 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 可以使用for循环和next() 生成器是迭代器,迭代器不一定是生成器 判断是否可以迭代 引用一个集合的模块 from collections.abc import Iterable,Iterator isinstance(listA, Iterator) iter函数 可迭代对象转换为迭代器 装饰器 decorator 闭包 方法内部声明方法,内部方法引用外部方法的变量,外部方法返回内部的引用 定义 拓展函数功能的一种函数,

python第十六天课

寵の児 提交于 2019-12-04 10:18:26
迭代器 1,可迭代对象 内部含有__iter__方法的对象是可迭代对象 遵循可迭代协议 dir() 检查对象含有什么方法 dir()会返回一个列表,这个列表中含有该对象的以字符串的形式所有方法名。 这样我们就可以判断python中的一个对象是不是可迭代对象了 print(dir("abc")) 判断对象是否是可迭代对象的方法 方法一: print('__iter__' in dir([1, 2, 3])) 通过成员运算符 ,返回bool 值 方法二: fromcollections .abc import Iterable print(isinstance('123',Iterable)) isinstance 判断一个对象是什么类型,返回bool 迭代器 内部含有 __iter__ 且 __next__方法的就是迭代器。 可迭代对象通过 .__iter__()可以转换成迭代器,满足迭代器协议。 l= [1, 2, 3] l_obj= l.__iter__() 判断迭代器的方法: 第一种: print('__next__'in dir(l_obj)) 第二种: fromcollections.abcimport Iterator print(isinstance('123',Iterator)) 迭代器的取值方法: 方法一: print(l_obj.__next__())

迭代器

最后都变了- 提交于 2019-12-04 09:40:56
1.装饰器补充 1.叠加装饰器 装饰的顺序: 由下到上装饰 执行的顺序: 由上往下 def wrapper1(func): def inner1(*args, **kwargs): print('1---start') # 被裝飾對象在調用時,如果還有其他裝飾器,會先執行其他裝飾器中的inner # inner2 res = func(*args, **kwargs) print('1---end') return res return inner1​​def wrapper2(func): def inner2(*args, **kwargs): print('2---start') res = func(*args, **kwargs) print('2---end') return res return inner2​​def wrapper3(func): def inner3(*args, **kwargs): print('3---start') res = func(*args, **kwargs) print('3---end') return res return inner3​'''叠加裝飾器的裝飾順序與執行順序: - 裝飾順序: 调用wrapper装饰器拿到返回值inner 由下往上裝飾 - 執行順序: 调用装饰过后的返回值inner 由上往下執行'''​​