迭代器

String的用法及例子

让人想犯罪 __ 提交于 2019-12-10 22:29:08
string是C++标准库的一个重要的部分,主要用于字符串处理。可以使用输入输出流方式直接进行操作,也可以通过文件等手段进行操作。 其中使用的代码多数都是来自cpp官网。 声明和初始化方法: 想使用string首先要在头文件当中加入< string > 声明: string s ; //声明一个string 对象 string ss [ 10 ] ; //声明一个string对象的数组 初始化: 使用等号的初始化叫做拷贝初始化,不使用等号的初始化叫做直接初始化。 #include < bits / stdc ++ . h > using namespace std ; int main ( ) { ios : : sync_with_stdio ( false ) ; string s ; //默认初始化,一个空字符串 string s1 ( "ssss" ) ; //s1是字面值“ssss”的副本 string s2 ( s1 ) ; //s2是s1的副本 string s3 = s2 ; //s3是s2的副本 string s4 ( 10 , 'c' ) ; //把s4初始化 string s5 = "hiya" ; //拷贝初始化 string s6 = string ( 10 , 'c' ) ; //拷贝初始化,生成一个初始化好的对象,拷贝给s6 //string s(cp

python-迭代器与生成器1

醉酒当歌 提交于 2019-12-10 22:14:23
python-迭代器与生成器1 迭代器与生成器 列表的定义 列表生成式:作用使代码更加简洁 通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。 而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面 几个元素,那后面绝大多数元素占用的空间都白白浪费了。 所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续 的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边 计算的机制,称为生成器:generator。 a=[1,2,3] print(a) a=[i*2 for i in range(10)] #也可以是传一个函数[fun for i rang(10)] print(a) #其他方式来完成: a=[] for i in range(10): a.append(i*2) print(a) 打印结果 [1, 2, 3] [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] 生成器:只有在调用时才会生成相应的数据,调用哪次就参生哪次。 只记录当前位置 只有一个方法_next_();2.7版本用netx(); (i*i for in in range(10))

yield from语法

吃可爱长大的小学妹 提交于 2019-12-10 16:36:36
yield from 是在Python3.3才出现的语法。所以这个特性在Python2中是没有的。 yield from 后面需要加的是可迭代对象,它可以是普通的可迭代对象,也可以是迭代器,甚至是生成器。 简单应用:拼接可迭代对象 # 我们可以用一个使用 yield 和一个使用 yield from 的例子来对比看下。 使用 yield 使用yield # 字符串 astr='ABC' # 列表 alist=[1,2,3] # 字典 adict={"name":"wangbm","age":18} # 生成器 agen=(i for i in range(4,8)) def gen(*args, **kw): for item in args: for i in item: yield i new_list=gen(astr, alist, adict, agen) print(list(new_list)) # ['A', 'B', 'C', 1, 2, 3, 'name', 'age', 4, 5, 6, 7] 使用yield from # 字符串 astr='ABC' # 列表 alist=[1,2,3] # 字典 adict={"name":"wangbm","age":18} # 生成器 agen=(i for i in range(4,8)) def gen(*args

再探C++Primer(6) 标准库类型string、vector和迭代器

放肆的年华 提交于 2019-12-10 16:10:13
###string# 使用string类需包含 string 头文件(旧C风格库中为string.h),string定义于命名空间std中(旧风格不是)。 #include<string> using std::string; string的初始化方式: string s1; //默认初始化,s1为空 string s2(s1); //拷贝初始化,s2为s1的副本 string s3("hello"); //传参初始化,s3为"hello"串,不包含最后的'\0' string s3 = "hello"; //等价于s3("hello"),实现方式不同 string s4(n,'c'); //把s4赋值为连续n个字符'c'组成的字符串 对string对象的操作: os << s is >> s //输入输出流 getline(is, s) //从is中读取一行给s s.empty() //判断s是否为空,为空返回true s.size() //返回s中字符个数 s[n] //访问s中第n个字符 s1 + s2 //返回s1和s2连接后的结果,每个+两侧必须有一个string对象 s1 = s2 //用s2的副本替代s1 s1 == s2 //若s1和s2中所有字符全部一样,则为true s1 != s2 <, <=, >, >= //利用字典序对字符进行比较,且对大小写敏感

python基础-迭代器

泄露秘密 提交于 2019-12-10 15:24:42
1.迭代:指的是一个重复的过程,每一次重复称为一次迭代,并且每一次重复的结果 是下一次重复的初始值 2.为什么要有迭代器 对于序列类型:str list tuple 可以依赖索引来迭代取值,但是对于dict,set,文件 python必须为我们提供一种不依赖于索引的迭代取值的方式》》》迭代器 3.可迭代的对象:有 obj.__iter__方法 a='asdd' b=[1,2,3,4,5] c=(1,2,3,4) d={'aa':'bb','aac':'vvc'} f=open('a.txt','w',encoding='utf-8') a.__iter__ b.__iter__ c.__iter__ d.__iter__ f.__iter__ 4.迭代器对象:obj.__iter__ , obj.__next__ 同时拥有这两个方法,只有文件是 f.__iter__ f.__next__ 总结:1.可迭代对象不一定是迭代器对象,2.迭代器对象一定是可迭代对象 3.调用obj.__iter__()方法得到的是迭代器对象(对于迭代器对象执行__iter__得到的仍然是它本身) len()等同于obj.__len__() iter 和 next同理 5.for循环详解:1.调用in后边的对象.__iter__()方法拿到迭代器对象2.执行next()方法3

c++ 迭代器模式(iterator)

荒凉一梦 提交于 2019-12-10 05:39:40
提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。当你需要访问一个聚集对象,而且不管这些对象是什么都需要遍 历的时候,就应该考虑用迭代器模式。同时需要对聚集有多种方式遍历时,可以考虑用迭代器模式。为遍历不同的聚集结构提供如开始、下一个、是否结束、当前哪 一项等统一接口。迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明地访问集 合内部的数据。 代码如下: #include <iostream> #include <string> #include <vector> using namespace std; class Iterator { public: Iterator(){}; virtual ~Iterator(){}; virtual string First() = 0; virtual string Next() = 0; virtual string GetCur() = 0; virtual bool IsEnd() = 0; }; class Aggregate { public: virtual int Count() = 0; virtual void Push(const string& strValue)=0; virtual string Pop(const

Python中的迭代器和生成器

十年热恋 提交于 2019-12-10 02:47:12
迭代器 Python为迭代器提供了两个BIF: iter()和next() ,对一个对象调用iter()就得到他的迭代器,调用next()就会返回下一个值,而当迭代器没有值可以返回的时候就会抛出一个 StopIteration 的异常,关于迭代器,有两个魔法方法: __iter()__和__next()__ ,下面实例: class Fibs : def __init__ ( self , n = 20 ) : self . a = 0 self . b = 1 self . n = n def __iter__ ( self ) : return self def __next__ ( self ) : self . a , self . b = self . b , self . a + self . b if self . a > self . n : raise StopIteration return self . a fibs = Fibs ( ) for each in fibs : print ( each ) 生成器 强大的列表推导式: print ( [ i * i for i in range ( 10 ) ] ) print ( [ i for i in range ( 1000 ) if not ( i % 2 ) and ( i % 3 ) ] )

python中68个内置函数的总结

若如初见. 提交于 2019-12-09 20:09:33
内置函数 内置函数就是python给你提供的, 拿来直接用的函数, 比如print., input等. 截止到python版本3.6.2 python一共提供了68个内置函数. #68个内置函数 # abs()   dict()   help()   min()   setattr() # all()   dir()   hex()   next()   slice() # any()   divmod()   id()   object()   sorted() # ascii()   enumerate()   input()   oct()   staticmethod() # bin()   eval()   int()   open()   str() # bool()   exec()   isinstance()   ord()   sum() # bytearray()   filter()   issubclass()   pow()   super() # bytes()   float()   iter()   print()   tuple() # callable()   format()   len()   property()   type() # chr()   frozenset()   list()   range()   vars() #

python中68个内置函数的总结

血红的双手。 提交于 2019-12-09 16:19:04
内置函数 内置函数就是python给你提供的, 拿来直接用的函数, 比如print., input等. 截止到python版本3.6.2 python一共提供了68个内置函数. #68个内置函数 # abs()   dict()   help()   min()   setattr() # all()   dir()   hex()   next()   slice() # any()   divmod()   id()   object()   sorted() # ascii()   enumerate()   input()   oct()   staticmethod() # bin()   eval()   int()   open()   str() # bool()   exec()   isinstance()   ord()   sum() # bytearray()   filter()   issubclass()   pow()   super() # bytes()   float()   iter()   print()   tuple() # callable()   format()   len()   property()   type() # chr()   frozenset()   list()   range()   vars() #

【C++】——STL关联式容器认识以及使用

不羁岁月 提交于 2019-12-09 13:38:31
STL关联式容器 关联式容器: 跟STL中的序列式容器是相同的都是用来存储数据,与序列式容器不同的是,关联式容器存储的是<key,value>结构的键值对,在数据检索是,关联式容器的效率比序列式容器更高; 键值对: 用来表示具有一一对应关系的的一种结构;该结构值一般只包含量两个成员变量key和vlaue,其中key代表键值,value表示与key值对应的信息; 关联式容器底层数据结构: 树形结构 和 哈希结构 树形结构: set、map、muitimap、multiset 哈希结构: unordered_map、unordered_set 键值的结构表示: template < class T1 , class T2 > struct pair { typedef T1 first_type ; typedef T2 second_type ; T1 first ; T2 second ; pair ( ) : first ( T1 ( ) ) , second ( T2 ( ) ) { } pair ( const T1 & a , const T2 & b ) : first ( a ) , second ( b ) { } } ; make_pair template < class T1 , class T2 > pair < T1 , T2 > make_pair (