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"" 引号当中的字符串不转义 #练习 # ...
随机推荐
- GSAP JS基础教程--动画的控制及事件
好多天没有写无博文啦,今天无聊就再写一下! 今天要讲的是TweenLite的一些事件以及,TweenLite动画的控制,TweenMax类似,请自行参考官方文档:http://api.greensoc ...
- python --help查询python相关命令
C:\Users\lenovo>python --help usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ... O ...
- nessus 激活码
nessus激活码的申请 nessus屏蔽了中国的激活码申请,中国IP申请的时候会直接跳转到购买商业版的页面. 解决方法: 使用IE代理或者VPN,用美国的IP最好,然后访问网址: http://ww ...
- 原:Myeclipse10+Egit+bitbucket实现版本控制
1.首先在https://bitbucket.org注册账号,建立仓库(repository),这部分有问题的可以看https://confluence.atlassian.com/display/B ...
- /etc/fstab文件损坏的补救措施
最近乱搞,把/etc/fstab弄坏了,导致无法进入图形界面,而且所有文件都是只读的(简直郁闷到底啊),查了好多资料什么的终于弄好了,也走了不少弯路 恩,我不喜欢扯太多东西,这个是补救的帖子,还是希望 ...
- HipHop的原理
HipHop的原理 HipHop将PHP代码转换为高度优化的C++代码,然后再用g++编译器编译.它可以保持语义等效地执行源代码,但为了提高性能,牺牲了一些很少用到的特性,比如eval(). HipH ...
- <转>查看linux占用内存/CPU最多的进程
转自 http://beginman.cn/page26/ 查使用内存最多的10个进程 ps -aux | sort -k4nr | head -n 10 或者top (然后按下M,注意大写) 查使用 ...
- 云计算设计模式(二十一)——Sharding分片模式
云计算设计模式(二十一)——Sharding分片模式 将一个数据存储到一组水平分区或碎片.存储和访问大量数据时,这个模式可以提高可扩展性. 背景和问题 由一个单一的服务器托管的数据存储区可能会受到以下 ...
- 如何修改 VIM 制表符的空格数?
想修改一下编辑器vi里的制表符(Tab)的空格数.因为它默认的太长(默认是8个空格). 在网上搜到了这篇文章http://my.oschina.net/captaintheron/blog/515 ...
- jQuery缓存机制(三)
缓存机制提供的入口有: $.data([key],[value]) // 存取数据 $.hasData(elem) // 是否有数据 $.removeData([key]) // 删除数据 $.acc ...