from collections import Iterable #切片************************
#
#取一个list或tuple的部分元素是非常常见的操作 ,Python提供了切片(Slice)操作符,能大大简化这种操作 li = [1,22,4,5,3,21] l = li[0:2] #取前两个元素 从0个开始,到第二个结束,不包含第二个
print(l) # [1,22] # Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片,试试: l = li[-2:] # [3,21]
m = li[-2:-1] # [3] # 记住倒数第一个元素的索引是-1
#
# 切片操作十分有用。我们先创建一个0-99的数列: lis = list(range(100)) # [0,....99] l = lis[:10] #前10个 m = lis[-10:] #后10个 n = lis[10:20] #第11个到第20个 o = lis[:10:2] #前10个 ,每两个取一个 [0,2,4,6,8] v = lis[::5] #所有数字,每五个取一个 # print( v ) # [0,5,10,15,20,....95] # 甚至什么都不写,只写[:]就可以原样复制一个list: copyLis = lis[:] # tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple:
t = (1,2,3,4)
# print( t[1:3]); # ( 2 , 3 ) #字符串'xxx'也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串: # print('asdfghj'[:3]) # 'asd'
# print('asdfghj'[::3]) #'afj' # 迭代#####################
#在Python中,迭代是通过for ... in来完成的 # for ... in 迭代 list或tuple l = ['小明','小李','小王','小张'] for x in l:
print( x ) # for ... in 迭代 dict d = {'name':'xiaoWang','gender':'女','age':'18'} for x in d:
print( x ) # 'name' 、'gender'、'age' #默认情况下,for ... in 迭代 dict 时,dict迭代的是key,如果想迭代value值,可以用for value in d.values(): for value in d.values():
print(value) # ‘18、'女'、'xiaoWang' # !!!注意, 因为dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样。 # 如果想同时迭代key和value,可以用 for k,v in d.items()
for k , v in d.items():
print(k,':',v) # 'name':'xiaoWang','gender':'女','age':'18' # 字符串也是可迭代对象,也可以用 for ... in 循环: str = '我是小明,我爱滚出去' for s in str:
print( s ) # 我、是、小、明、,、我、爱、滚、出、去 # 所以,当我们使用for循环时,只要作用于一个可迭代对象,for循环就可以正常运行,而我们不太关心该对象究竟是list还是其他数据类型。 # 那么,如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断: bl = isinstance( 'str' , Iterable )
bl2 = isinstance( [1,2,3] , Iterable )
bl3 = isinstance( 122 , Iterable )
print( bl ) #True
print( bl2 ) #True
print( bl3 ) #False # 如果要对list实现类似Java那样的下标循环怎么办?
# Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身: for i,value in enumerate(['a','b','c','d']): print( i , value ) # 0 , 'a'; 1,'b'; 2,'c'; 3,'d' # 上面的for循环里,同时引用了两个变量,在Python里是很常见的,比如下面的代码: ls = [{'a':1,'b':2},{'a':3,'b':4},{'a':5,'b':6}] for i, o in enumerate( ls ):
print( o['a'] ) # 1 、3、5 for x , y in [('a' , 'b'),('c','d')]: print( x , y ) # a b 、 c d

python迭代和切片的更多相关文章

  1. Python高级特性(切片,迭代,列表生成式,生成器,迭代器)

    掌握了Python的数据类型.语句和函数,基本上就可以编写出很多有用的程序了. 比如构造一个1, 3, 5, 7, ..., 99的列表,可以通过循环实现: L = [] n = 1 while n ...

  2. 在python&numpy中切片(slice)

     在python&numpy中切片(slice) 上文说到了,词频的统计在数据挖掘中使用的频率很高,而切片的操作同样是如此.在从文本文件或数据库中读取数据后,需要对数据进行预处理的操作.此时就 ...

  3. Python中的切片符

    最近在学python,感觉切片符有点难以理解.在网上查了点资料,然后做个总结 理解切片符,首先得知道数组是从0开始的, 而且切片符最后一个是-1. 我们先定义个数组   a=[1,2,3,4,5] 切 ...

  4. 完全理解 Python 迭代对象、迭代器、生成器(转)

    完全理解 Python 迭代对象.迭代器.生成器 本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators » nvie.com,俺写的这篇文章是 ...

  5. 完全理解 Python 迭代对象、迭代器、生成器

    完全理解 Python 迭代对象.迭代器.生成器 2017/05/29 · 基础知识 · 9 评论 · 可迭代对象, 生成器, 迭代器 分享到: 原文出处: liuzhijun    本文源自RQ作者 ...

  6. Python迭代(入门8)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6407980.html 本文出自:[Edwin博客园] Python迭代 1. 什么是迭代 注意: 集合是指包 ...

  7. Python高级教程-切片

    Python中的切片 取一个list或tuple的部分元素是非常常见的操作.比如,一个list如下: >>> L = ['A','B','C','D'] 对经常取指定索引范围的操作, ...

  8. Python中的切片操作

    python中的切片操作功能十分强大,通常我们利用切片来进行提取信息,进行相关的操作,下面就是一些切片的列子. 列如我们从range函数1-100中取7的倍数,函数及结果如下所示: >>& ...

  9. python的字符串切片技术

    听说过python的字符串切片技术吗?是不是听着超高级的?实际上,也不用想得太难,python的字符串切片技术就是将字符串的某些字符提取出来而已~ 字符串切片 字符串是一种序列类型,可以按序号访问其中 ...

随机推荐

  1. 让Python输出更漂亮

    print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="": student_age = 18 print("学生的年龄为:", stude ...

  2. echarts legend 重叠 (转载)

    解决方案:  1. 调整option中的grid.top值才能避免重叠:(可以设置定制,也可以定义了一个计算公式) 2. 文档注明[特殊字符串 ''(空字符串)或者 '\n' (换行字符串)用于图例的 ...

  3. Linux系统软件安装的几种方式

    Linux系统,一个文件能不能执行看的是有没有可执行权限x,不过真正的可执行文件是二进制文件(binary file),举例来说Linux上的c语言源码编写完后,通过gcc程序编译后就可以创建一个可执 ...

  4. 《HelloGitHub》第 23 期

    公告 新的一年,不忘初心,从新开始.加油! <HelloGitHub>第 23 期 兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub 上有趣.入门级的 ...

  5. HDU - 3001 Travelling 状压dp + 三进制 [kuangbin带你飞]专题二

    终于刷完搜索专题了. 题意:给定n个城市,每个城市参观不能超过两次,两个城市之间有道路通过需要花费X,求通过能所有城市的最小花费. 思路:每个城市有三个状态0,1,2,可用三进制存储所有城市的访问状态 ...

  6. 【开源】C#.NET股票历史数据采集,【附18年历史数据和源代码】

    如果用知乎,可以关注专栏:.NET开源项目和PowerBI社区 重点重点:我没有买股票,没有买股票,股市是个坑,小心割韭菜哦. 本文的初衷是数据分析(分析结果就不说了,就是想看看筛选点数据),只不过搞 ...

  7. Docker系统七:Docker数据管理

    Docker的数据管理 I. 基本概念 Docker容器一旦删除,其相关的rootf文件系统就会被删除,其容器内的数据将一并删除,为了保存相关数据,Docker提出了数据卷的概念. II. 数据卷 D ...

  8. 定义一个Matrix类,实现矩阵的加法和乘法

    #include<iostream> using namespace std; class Matrix { int row;//矩阵的行 int col;//矩阵的列 int **a;/ ...

  9. 使用simhash库来进行网页去重

    首先感谢作者yanyiwu贡献的开源项目https://github.com/yanyiwu/simhash.在做项 目过程中,翻了一遍<这就是搜索引擎  核心技术详解>这本书的查重算法, ...

  10. Emacs编辑器配置

    以前总是用的vim编辑器,今天突然想换emacs 用下.折腾了很久终于搞定.使用的是windows测试环境 emacs下载地址http://ftp.gnu.org/gnu/emacs/windows/ ...