Python3 学习笔记------迭代器】的更多相关文章

python 迭代器 要理解python迭代器(iterator),先要理解两个概念:Iterable(可迭代对象).Iterator(迭代器) 先来help()一下Iterator: >>> help(Iterator) Help on class Iterator in module collections.abc: class Iterator(Iterable) | Method resolution order: | Iterator | Iterable | builtins…
迭代 使用一个循环来遍历某个东西时这个过程本身叫做迭代. 可迭代对象 python中只要定义了可以返回一个迭代器的__iter__方法,或者定义了可以支持下标索引的__getitem__方法,那么它就是一个可迭代对象. 迭代器----一个可以记住遍历的位置的对象 迭代器对象从第一个元素开始向前访问直到所有的元素被访问完结束. 迭代器的两个基本方法 1.iter()用来生成迭代器 语法: iter(object[, sentinel]) 参数: object -- 支持迭代的集合对象. senti…
#python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #类似 其他语言的for循环,但是比for抽象程度更高 # for ... in #通过collections模块的 Iterable 类型判断一个对象是否可以迭代 from collections import Iterable from collections import Iterator #list 有下标可以迭代,dict 没有下标,也可以迭代 d…
Python3学习笔记(urllib模块的使用)   1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None) -         url:  需要打开的网址 -         data:Post提交的数据 -         timeout:设置网站的访问超时时间 直接用urllib.request模块的urlopen…
前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程是参考了廖雪峰的官方网站,教程非常详细,一步步照着学习就行了,我在自己的文章中就尽量不重复了.我会在自己后续的文章中会结合一些实例来学习Python3. 环境介绍 系统:Centos 7.4 编辑器:Vim 工具:Docker CE v17.09.0 & Docker Compose v1.17.0…
#python3 学习笔记17/07/11 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #通过列表生成式可以生成格式各样的list,这种list 一般是容量小的list #导入os模块,模块的概念后面讲到 import os #生成[1,2,3,4,5,6,7,8,9,10] l1 = list(range(1,11)) print("1-10",l1) # 生成[1*1, 2*2,...10*10] l2 = [] for x in…
#python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #切片slice 大大简化 对于指定索引的操作 fruits = ["apple","origin","pear"] print("fruits",fruits) # 取前三个元素 索引从0开始,取到2(不包括2). part0_2 = fruits[0:2] print("par…
<Head first设计模式>学习笔记 – 迭代器模式 代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示. 爆炸性新闻:对象村餐厅和对象村煎饼屋合并了!真是个好消息!现在我们可以在同一个地方,享用煎饼屋美味的煎饼早餐,和好吃的餐厅午餐了.但是,好像有一点小麻烦:新的餐厅想用煎饼屋菜单当作早餐的菜单,使用餐厅的菜单当做午餐的菜单,大家都同意了这样实现菜单项.但是大家无法同意菜单的实现.煎饼屋使用ArrayList记录他的菜单项,而餐厅使用的是数组.他们两个都不愿意改…
参考http://www.runoob.com/python3/python3-iterator-generator.html 迭代器 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退. 迭代器有两个基本的方法:iter() 和 next(). 字符串,列表或元组对象都可用于创建迭代器: list = [1,2,3,4]it = iter(list) # 创建迭代器对象print(next(it)) # 输出迭代器的下一个元素print(next(it))…
最近在学习Python3,想写一些自己的学习笔记.方便自己以后看,主要学习的资料来自菜鸟教程的Python3教程和廖雪峰官方网站的Python教程. 1.下载 1)打开https://www.python.org/downloads/ 当前最新版本3.6.5 2.安装 下载完成之后,运行exe文件,第一个页面底部,记得勾选add Python to path,这样会自动把Python加到系统变量里面去,然后默认安装即可 我的安装路径: C:\Users\ms\AppData\Local\Prog…
#python 学习笔记 2017/07/13 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #从高阶函数的定义,我们可以知道,把函数作为参数的函数,把函数作为返回值的参数都是高阶函数 #可变参数求和 def calc_sum(*args): sum = 0 for n in args: sum = sum + n return sum #这个函数会立即返回求和结果,如果不要立即返回求和结果,而是需要在计算,可以返回求和函数,当再次调用时才给出计…
# python学习笔记 2017/07/13 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #python 内置sorted()函数 可以对list进行排序 l = [1,4,-7,13] print(sorted(l)) #sort() 函数是一个高阶函数,它可以接收一个key函数来实现自定义的排序 #按绝对值大小排序 print(sorted(l, key = abs)) #字符串排序 ,按照ascii 的大小写比较 sl = ["abc&q…
#python学习笔记 17/07/10 # !/usr/bin/evn python3 # -*- coding:utf-8 -*- import math #函数 函数的 定义 #定义一个求绝对值函数 def abstruct(a): if not isinstance (a, (int, float)): raise TypeError("param must be a int or float type") if a >= 0: return a else: return…
#python学习笔记 17/07/07 # !/usr/bin/evn python3 # -*- coding:utf-8 -*- #r"" 引号当中的字符串不转义 #练习 #打印 '\\\t\n' print(r'\\\t\n') #打印 n = 123 print('n = 123') # 打印 f = 456.789 print("f = 456.789") #打印 s1 = 'Hello, world!' print("s1 = 'Hello,…
记得在刚开始学Python的时候,看到可迭代对象(iterable).迭代器(iterator)和生成器(generator)这三个名词时,完全懵逼了,根本就不知道是啥意识.现在以自己的理解来详解下这三者的关系. 一.可迭代对象(iterable) 我们知道,在Python世界里,一切皆对象.对象根据定义的维度,又可以分为各种不同的类型,比如:文件对象,字符串对象,列表对象...等等. 那什么对象才能叫做可迭代对象呢?一句话:“实现了__inter__方法的对象就叫做可迭代对象”,__inter…
我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list.tuple.dict.set.str等: 一类是generator,包括生成器和带yield的generator function. 这些可以直接作用于for循环的对象统称为可迭代对象:Iterable. 可以使用isinstance()判断一个对象是否是Iterable对象: >>> from collections import Iterable >>> isinstanc…
之前一直使用python2.7,最近打算学习下python3教程,再此记录下一些要点(未完待续...) 1.缩进 缩进有利有弊.好处是强迫你写出格式化的代码,但没有规定缩进是几个空格还是Tab.按照约定俗成的管理,应该始终坚持使用4个空格的缩进. 缩进的另一个好处是强迫你写出缩进较少的代码,你会倾向于把一段很长的代码拆分成若干函数,从而得到缩进较少的代码. 缩进的坏处就是“复制-粘贴”功能失效了,这是最坑爹的地方.当你重构代码时,粘贴过去的代码必须重新检查缩进是否正确. 2.数据类型 整数:任意…
参照http://www.runoob.com/python3/python3-dictionary.html 字典 字典是另一种可变容器模型,且可以存储任意类型对象. dict1 = {key1:value1,key2:value2} 注意:键key是唯一的,但是值不用,值可以是字符串.数字或元组. dict2 = {'a':1,'b':'12'} dict3 = {'Name':'jack','Age':'22','Class':'first'}print("dict3['Name']: &…
1.手动遍历迭代器 使用next函数,并捕获StopIteration异常. def manual_iter(): with open('./test.py') as f: try: while True: line = next(f) print line except StopIteration: pass next函数也可以指定值来标记结尾 def manual_iter(): with open('./test.py') as f: try: while True: line = nex…
迭代器模式,使用很多,但是很少实现.常用的集合都支持迭代器. 集合中的CreateIterator()可用于创建自己的迭代器,在里面通过调用迭代器的构造函数Iterator(Aggregate)来绑定自己到迭代器中,如果不使用此方法,也可以在场景中直接new Iterator(Aggregate)来得到一个迭代器.迭代器中的接口First()等其实本质都是操作引用的Aggregate对象实现的.好处在于不用集合自己来写迭代方法,一是可以复用迭代器,减少每种集合都去造轮子,二是看起减少了集合的接口…
一.内置函数补充1.callable()检测传递的参数是否可以被调用.def f1() pass可以被调用f2 = 123不可以被调用2.chr()和ord()chr()将ascii码转换成字符,ord()将字符转换成acsii码在2.7中chr()和ord()用来翻译参数和ascii码的对应关系.例:r = chr(65)print(r)和r = ord("B")print(r)实例:随机验证码import random #用来生成随机数的模块li = []for i in rang…
一.面向对象(初识)由类和方法组成,类里面封装了很多功能,根据这个类,可以创建一个这个类的对象,即对象是根据这个类创建的,以后这个对象要使用某个功能的时候就从这个类里面的找.例:str -功能一 -功能二 -功能三 -...s1 = 'alex'str即是类,s1即是根据这个类创建的一个对象.二.set集合set是一个无序.不重复.可嵌套的集合.1.语法:se = {}或se = set()或se = set((11,22,33,33)),set()时其实是调用这个类里面的__init__方法写…
一.模块初识(接上篇)模块(库)分为两种:1.标准库:不需要安装直接可以导入的库,例:getpass.2.第三方库:必须要下载安装才可以使用.注:编辑的模块文件名不能与导入的模块名重复. 在模块文件中导入其他模块时,程序会先在本目录下查找模块,如果文件本身的名称和导入的模块名相同,则会找到并导入自身. 此操作在python2.x时会报错,在python3.x中可以正常运行.但不建议出现这样的情况.标准库模块:1.sys:import syssys.path:python全局变量的路径,打印此方法…
一.编程语言主要从以下几个角度分类:1.编译型和解释型2.静态语言和动态语言3.强类型定义语言和弱类型定义语言编译型:程序运行前先由负责翻译的程序将代码转换成可执行代码进行执行.例如C/C++.Pascal/Delphi.VB.其优点为运行速度快,对系统要求低,适用于开发操作系统.大型应用程序.数据库系统等.解释型:程序运行时每直行到一条指令就由解释程序将所执行到的代码转换成可执行代码进行执行,如此反复,直至程序直行完毕.例如Java.JavaScript.VBScript.Perl.Pytho…
什么是迭代器模式? 迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示. 何时使用迭代器模式? 当需要访问一个聚合对象,而且不管这些对象是什么都需要遍历的时候,需要考虑使用迭代器模式. 迭代器模式的组成 Iterator():迭代器抽象类,用于定义得到开始对象,对到下一个对象,判断是否到结尾,当前对象等抽象方法,统一接口. ConcreteAggregate():保存聚合对象. ConcreteIterator():继承于Iterator,实现…
2018-03-01数据结构与算法(4) 1.16过滤序列元素 最简单的过滤序列元素的方法就是使用列表推导.比如: >>> mylist = [1, 4, -5, 10, -7, 2, 3, -1] >>> [n for n in mylist if n > 0] [1, 4, 10, 2, 3] >>> [n for n in mylist if n < 0] [-5, -7, -1] >>> 用列表推导的一个潜在缺陷就…
2018-03-01数据结构和算法(3) 1.11 命名切片 假定你有一段代码要从一个记录字符串中几个固定位置提取出特定的数据字段(比如文件或类似格式): ###### 0123456789012345678901234567890123456789012345678901234567890' record = '....................100 .......513.25 ..........' cost = int(record[20:23]) * float(record[3…
2018-03-01数据结构和算法(2) 1.6字典中的键映射多个值 一个字典就是一个键对应一个单值的映射.如果你想要一个键映射多个值,那么你就需要将这多个值放到另外的容器中, 比如列表或者集合里面.比如,你可以像下面这样构造这样的字典: d = { 'a' : [1, 2, 3], 'b' : [4, 5] } e = { 'a' : {1, 2, 3}, 'b' : {4, 5} } 选择使用列表还是集合取决于你的实际需求.如果你想保持元素的插入顺序就应该使用列表, 如果想去掉重复元素就使用…
1.  网站本质:通过socket建立连接. 服务端(网站) 1.  先启动并监听:80端口 4.  获取请求信息 请求头 请求体 5.  处理请求 响应内容: 响应头:\r\n\r\n响应体    响应头会被放到浏览器中.  响应体就是收到的html页面. 客户端(浏览器) 2.  建立连接   IP:端口 3.  发送请求: 请求首行 \r\n    get请求数据在uri里面 请求头\r\n\rn 空行 请求体:  如果是get请求,请求体为空,提交的数据只能在uri里面:如果是post请…
1.       http协议   GET请求:数据放在url后面 POST请求:数据放在请求体中 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <!--<form action="" me…