python3学习笔记(6)_iteration
#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 = {"a":1,"b":2,"c":3}
#dict 默认是迭代 key的,且dict的迭代结果顺序可能不一样
for key in d:
print(key) #如果要迭代value ,需这样做
for value in d.values():
print(value) #如果要同时迭代 key 和 value,可以这样做
for key, value in d.items():
print(key, value) #判断 字符串'abc' 是否可迭代
print(isinstance("abc",Iterable)) #判断list 是否可以迭代
print(isinstance(['a','b','c'],Iterable)) #判断 整数是否可迭代
print(isinstance(123,Iterable)) #通过enumerate 函数可以把一个list变成 索引-元素对,同时迭代之
for i,value in enumerate(['a','b','c']) :
print(i, value) #for循环里同时引用两个变量
for x, y in [(1,2),(3,4),(5,6)]:
print(x, y) #可以直接作用于for循环的数据类型有以下几种:
#一类是集合数据类型,lsit,tuple,dict,set,str
#一类是generator,包括生成器和带yield的generator function
# 这些可以直接作用于for循环的对象统称为可迭代对象:Iterable
# 可以使用 isinstance()判断一个对象是否是 Iterable print(isinstance([],Iterable))#True
print(isinstance({},Iterable))#True
print(isinstance("abc",Iterable))#True
print(isinstance((x for x in range(10)), Iterable))#True
print(isinstance(100, Iterable))#False #生成器不但可以作用于 for循环,还可以被 next() 函数不断调用,并返回下一个值,直到最后抛出StropIteration
#错误,表示无法继续返回下一个值 #可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator #同样可以使用 isinstance() 判断一个对象是否是Iterator对象:
print(isinstance((x for x in range(10)), Iterator))#True
print(isinstance([], Iterator))#False
print(isinstance({}, Iterator))#False
print(isinstance("abc",Iterator))#False #可以使用 iter() 函数把 lsit,dict,str等 Iterable变为 Iterator
print(isinstance(iter([]), Iterator))#True
print(isinstance(iter("abc"), Iterator))#True #Iterator 对象支持 next()函数,并不断返回下一个数据,直到抛出StopIreration错误,这是一个有序的数据流序列,我们不知道序列的长度。但是由于序列是一个一个生成,可以生成无限多个元素,可见,他可以表示所有自然数。而list 是做不到这一点的
python3学习笔记(6)_iteration的更多相关文章
- Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html
Python3学习笔记(urllib模块的使用) 1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, ...
- Python3学习笔记 - 准备环境
前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...
- python3学习笔记(7)_listComprehensions-列表生成式
#python3 学习笔记17/07/11 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #通过列表生成式可以生成格式各样的list,这种list 一 ...
- python3学习笔记(5)_slice
#python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #切片slice 大大简化 对于指定索引的操作 fruits ...
- Python3学习笔记01-环境安装和运行环境
最近在学习Python3,想写一些自己的学习笔记.方便自己以后看,主要学习的资料来自菜鸟教程的Python3教程和廖雪峰官方网站的Python教程. 1.下载 1)打开https://www.pyth ...
- python3学习笔记(9)_closure
#python 学习笔记 2017/07/13 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #从高阶函数的定义,我们可以知道,把函数作为参数的函数, ...
- python3学习笔记(8)_sorted
# python学习笔记 2017/07/13 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #python 内置sorted()函数 可以对list进 ...
- python3学习笔记(4)_function-参数
#python学习笔记 17/07/10 # !/usr/bin/evn python3 # -*- coding:utf-8 -*- import math #函数 函数的 定义 #定义一个求绝对值 ...
- python3学习笔记(1)_string
#python学习笔记 17/07/07 # !/usr/bin/evn python3 # -*- coding:utf-8 -*- #r"" 引号当中的字符串不转义 #练习 # ...
随机推荐
- iOS 关于信鸽推送点击推送通知的处理
最近的项目中使用了推送模块,使用的是企鹅帝国的信鸽推送服务,关于具体怎么推送的,证书如何设置,我不再赘述,一来开发文档中已经讲的非常清楚,二来在网上一搜的话也能搜到一大堆:在这里主要写下关于推送的通知 ...
- 7代CPU安装win7的方法
7代CPU安装win7会遇到的问题: 32位的win7不支持uefi启动,64位win7理论上支持uefi启动,但实际上需要开启兼容模式才能启动,并且启动速度并没有变快. 根据不同型号的主板,需要解决 ...
- git+gitolite+cgit+apache on Ubuntu
git+gitolite+cgit+apache on Ubuntu Just record, do *NOT* copy-paste. git+gitolite sudo apt-get insta ...
- centos上yum安装异常处理
最近在centos上通过yum来安装程序,出下了以下问题: Loaded plugins: fastestmirror Setting up Install Process Loading mirro ...
- PostgreSQL存储过程(5)-异常错误处理
1. 异常错误处理 在PL/pgSQL函数中,如果没有异常捕获,函数会在发生错误时直接退出,与其相关的事物也会随之回滚.我们可以通过使用带有EXCEPTION子句的BEGIN块来捕获异常并使其从中恢复 ...
- Burp Post、Get数据包转为上传multipart/form-data格式数据包
方法一: 新建一个网页进行上传,代码代码如下: <html> <head></head> <body> <form method="po ...
- Android 监听apk安装替换卸载广播
首先是要获取应用的安装状态,通过广播的形式 以下是和应用程序相关的Broadcast Action ACTION_PACKAGE_ADDED 一个新应用包已经安装在设备上,数据包括包名(最新安装的包程 ...
- [Ubuntu] geoip-bin 程序包 - 查询 IP 归属地
简述:在Linux命令行下查询IP归属地. 对Ubuntu/Debian系统,使用APT命令进行安装: $ sudo apt-get install geoip-bin 该包由MaxMind提供,它同 ...
- tp3.2中怎么访问分类及子分类下面的文章
在项目开发过程中,我们可能会遇到在进入文章分类时需要遍历文章分类及文章子分类下面的文章的情况,具体解决步骤如下: 一.为便于理解,这里列出用到的表及字段 文章分类表(article_cate) 文章表 ...
- IOS设计模式第十篇之命令行设计模式
命令行设计模式: 命令设计模式将一个请求或行动作封装为对象.这个封装请求比原始的请求要灵活并且可以在对象之前被传递,存储,动态修改或者放进队列里面.苹果 苹果公司实现这种模式使用Target-Acti ...