迭代器

Python基础之 函数初识

孤人 提交于 2019-11-28 06:11:41
1. 文件操作: 读操作: 格式:f = open("文件路径",mode = "r",encoding = "utf-8") f : 代表文件句柄 文件路径: 绝对路径:从根文件夹下查找 相对路径: 相对于某个文件进行查找 f = open("D:\Python_s25\day08\小姐姐电话号",mode="r",encoding="utf-8")# print(f.read()) # 全部读取 (1)print(f.read(3)) # 按照字符读取 (2)print(f.readline()) # 默认尾部有一个\n# (3)print(f.readline().strip()) # 读取一行# (4)print(f.readline().strip()) # 将\n去除# (5)print(f.readlines()) #一行一行读取,全部存储在列表中 读字节:rb 读取图像,视频时使用的的操作 字节操作,不能执行encoding f = open("timg.jpg",mode="rb")# print(f.read()) # 全部读取 (1) print(f.read(3)) # 按照字节读取 (2)(f.readline()) # 按照行进行读取 (3)print(f.readlines()) r 和 rb 的区别: r 需要指定encoding,rb 不需要

Python:迭代器

随声附和 提交于 2019-11-28 05:43:30
可迭代对象 Iterable 可以直接作用于 for 循环的对象统称为可迭代对象 Iterable 。 一类是集合数据类型,如 lsit 、 tuple 、 dict 、 set 、 str 等; 另一类是 generator ,包括生成器和带 yield 的函数。 可以使用 isinstance() 进行判断。 可迭代器 Iterator 可以被 next() 调用并不断返回下一个值的对象成为迭代器 Iterator 。 generator 都是迭代器; 可使用 iter() 将 list 、 dict 、 str 变为迭代器。 可以使用 isinstance() 进行判断。 总结 for 循环本质上就是通过不断调用 next() 实现的,故可迭代器 Iterator 类型的对象都是可迭代对象 Iterable (如 generator );反之,不一定(如 list 、 str 等)。 来源: https://blog.csdn.net/Regina23/article/details/100014800

python中的生成器、迭代器、闭包、装饰器

佐手、 提交于 2019-11-28 05:37:34
迭代器 迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 可迭代对象 以直接作用于 for 循环的数据类型有以下几种: 一类是集合数据类型,如 list 、 tuple 、 dict 、 set 、 str 等; 一类是 generator ,包括生成器和带 yield 的generator function。 这些可以直接作用于 for 循环的对象统称为可迭代对象: Iterable 。 判断是否可以迭代 可以使用 isinstance() 判断一个对象是否是 Iterable 对象: from collections import Iterable isinstance([],Iterable) # True isinstance({},Iterable) # True isinstance(123,Iterable) # False isinstance((x for x in range(10)),Iterable) # True 什么是迭代器 可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。 可以使用 isinstance() 判断一个对象是否是 Iterator 对象: from collections import

STL之set容器和multiset容器

早过忘川 提交于 2019-11-28 05:33:39
摘要:本文主要介绍了set容器和multiset容器的相关内容。 1、基本概念 set容器 multiset容器 概念 所有元素都会根据元素的键值自动被排序, 元素即是键值又是实值,不允许两个元素 有相同的键值,元素值不可以被改变 multiset特性及用法和set完全相同, 唯一的差别在于它允许键值重复 实现 set和multiset的底层实现是红黑树,红黑树为平衡二叉树的一种 2、二叉树 2.1 概念 二叉树就是任何节点最多只允许有两个字节点。分别是左子结点和右子节点。 2.2 二叉搜索树 上面我们介绍了二叉搜索树,那么当一个二叉搜索树的左子树和右子树不平衡的时候,那么搜索依据上图表示,搜索9所花费的时间要比搜索17所花费的时间要多,由于我们的输入或者经过我们插入或者删除操作,二叉树失去平衡,造成搜索效率降低。 所以我们有了一个平衡二叉树的概念,所谓的平衡不是指的完全平衡。 RB-tree(红黑树)为二叉树的一种。 3、常用API set multiset API 意义 API 意义 构造函数 set<T> st set默认构造函数 mulitset<T> mst multiset默认构造函数 set(const set &st) 拷贝构造函数 赋值操作 set& operator =( const set &st) 重载等号操作符 swap(st) 交换两个集合容器 大小操作

迭代器

对着背影说爱祢 提交于 2019-11-28 04:56:32
方法1: 1 import time 2 from collections import Iterable 3 from collections import Iterator 4 5 6 class Classmate(object): 7 8 9 def __init__(self): 10 self.names = list() 11 12 13 def add(self,name): 14 self.names.append(name) 15 16 17 def __iter__(self): 18 """如果想要一个对象变成一个可以迭代的对象,即可以使用for,那么必须实现__iter__方法""" 19 return Classmator(self); # 调用Classmator 然后把自己传过去 20 21 22 class Classmator(object): 23 def __init__(self,obj): 24 self.obj = obj 25 # 定义索引值 26 self.current_num = 0 27 28 def __iter__(self): 29 pass 30 31 32 def __next__(self): 33 # 判断索引值是否超出列表个数范围 34 if self.current_num < len(self.obj

STL库中的equal_range()

让人想犯罪 __ 提交于 2019-11-28 04:55:27
equal_range根据键值,返回一对迭代器的pair对象。如果该键值在容器中存在,则pair对象中的第一个迭代器指向该键关联的第一个实例,第二个迭代器指向该键关联的最后一个实例的下一位置。如果找不到匹配的元素,则pair对象中的两个迭代器都将指向此键应该插入的位置。总之,equal_range返回迭代器位置区间 [ lower_bound, upper_bound ) 。见以下例子: #include <iostream> #include <map> int main () { std::multimap<char,int> my_multimap; my_multimap.insert(std::make_pair('a',10)); my_multimap.insert(std::make_pair('a',20)); my_multimap.insert(std::make_pair('a',30)); my_multimap.insert(std::make_pair('a',40)); my_multimap.insert(std::make_pair('b',10)); my_multimap.insert(std::make_pair('c',10)); my_multimap.insert(std::make_pair('c',20)); std::cout

c++之迭代器

别说谁变了你拦得住时间么 提交于 2019-11-28 04:54:07
迭代器: 1)定义:容器类名::iterator 迭代器名;     如:array<T,N>::iterator iter; vector<T>::iterator iter; deque<T>::iterator iter; list<T>::iterator iter; forward_lis<T>::iterator iter; 2)初始化:     vector<int> ivec;     vector<int>::iterator iter1=ivec.bengin(); //将迭代器iter1初始化为指向ivec容器的第一个元素     vector<int>::iterator iter2=ivec.end(); //将迭代器iter2初始化为指向ivec容器的最后一个元素的下一个位3)分类:正向迭代器:iterator    反向迭代器:reverse_iterator    常量正向迭代器:const_iterator    常量反向迭代器:const_reverse_iterator4)操作:    正向: *iter //对iter进行解引用,返回迭代器iter指向的元素的引用        iter->men //对iter进行解引用,获取指定元素中名为men的成员。等效于(*iter).men        ++iter //给iter加1

python3 迭代器与生成器

淺唱寂寞╮ 提交于 2019-11-28 04:12:34
迭代器 迭代是python最强大的功能之一,是访问集合元素的一种方式。 迭代器是一个可以记住遍历的位置的对象 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 迭代器有两个基本的方法:iter()和next(). 字符串,列表或元组对象都可以用于创建迭代器 生成器 在 python中, 使用了yield的函数被称为生成器(generator) 跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单的理解生成器就是一个迭代器。 在调用生成器运行的过程中,每次遇到yield时函数会暂停并保存当前所有的运行信息,返回yield的值。并在下一次执行next()方法从当前位置继续运行。 来源: https://www.cnblogs.com/fanx-1995/p/11391470.html

python3 - 迭代器

主宰稳场 提交于 2019-11-28 03:02:23
可以直接作用于 for 循环的数据类型有以下几种: 一类是集合数据类型,如 list 、 tuple 、 dict 、 set 、 str 等; 一类是 generator ,包括生成器和带 yield 的 generator function 。 这些可以直接作用于 for 循环的对象统称为可迭代对象: Iterable 。 可以使用 isinstance() 判断一个对象是否是 Iterable 对象: from collections import Iterable print(isinstance([],Iterabel)) 生成器,不但可以用于for循环,还可以被next()函数不断调用并返回下一个值,直到抛出 StopIteration 错误。 可以被 next() 函数调用并不断返回下一个值的对象称为迭代器: Iterator 。 可以使用 isinstance() 判断一个对象是否是 Iterator 对象。 from collections import Iterator print(isinstance([],Iterator)) 生成器都是 Iterator 对象,但 list 、 dict 、 str 虽然是 Iterable ,却不是 Iterator 。 集合数据类型如 list 、 dict 、 str 等是 Iterable 但不是 Iterator

Python迭代器

匆匆过客 提交于 2019-11-28 03:00:10
可迭代对象 以直接作用于 for 循环的数据类型有以下几种: 一类是集合数据类型,如 list 、 tuple 、 dict 、 set 、 str 等; 一类是 generator ,包括生成器和带 yield 的generator function。 这些可以直接作用于 for 循环的对象统称为可迭代对象: Iterable 。 判断是否可以迭代 可以使用 isinstance() 判断一个对象是否是 Iterable 对象 而生成器不但可以作用于 for 循环,还可以被 next() 函数不断调用并返回下一个值,直到最后抛出 StopIteration 错误表示无法继续返回下一个值了。 迭代器 可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。 可以使用 isinstance() 判断一个对象是否是 Iterator 对象: iter()函数 生成器都是 Iterator 对象,但 list 、 dict 、 str 虽然是 Iterable ,却不是 Iterator 。 把 list 、 dict 、 str 等 Iterable 变成 Iterator 可以使用 iter() 函数 最后 凡是可作用于 for 循环的对象都是 Iterable 类型; 凡是可作用于 next() 函数的对象都是 Iterator 类型 集合数据类型如