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. xBIM WeXplorer xViewer的导航,相机、剖切、隐藏 等操作

    目录 基础 xBIM WeXplorer 简要介绍 xBIM WeXplorer xViewer 基本应用 xBIM WeXplorer xViewer 浏览器检查 xBIM WeXplorer xV ...

  2. VUE学习笔记之vue cli 构建项目

    一.环境搭建: 1.安装node.js 从node.js官网下载并安装node,安装过程很简单,一路"下一步"就可以了.安装完成之后,打开命令行工具(win+r,然后输入cmd), ...

  3. 买帽子 (hash)

    思路:表示数字i出现的次数,在输入的同时记录每个数字出现的次数.最后从0枚举到1000判断第三个是否存在,存在则记录该数字. #include <stdio.h> #include < ...

  4. uva103 动态规划

    多维矩形嵌套,和二维的一模一样.判断能否嵌套时需要先排序. AC代码: #include<cstdio> #include<cstring> #include<algor ...

  5. UVA - 11270 轮廓线DP

    其实这题还能用状压DP解决,可是时间达到2000ms只能过掉POJ2411.状压DP解法详见状压DP解POJ2411 贴上POJ2411AC代码 : 2000ms 时间复杂度h*w*(2^w)*(2^ ...

  6. day2(字符串、格式化输出、运算符、流程控制)

    一.字符串 在Python中,加了引号的字符都被认为是字符串! 单引号.双引号.多引号的区别? 单引号和 双引号没有任何区别,但是某种情况下需要单双配合 如 msg = " My name ...

  7. Java Enum总结

    枚举类型 枚举类型是Java5新增的特性之一,枚举是一种特殊类型的类,其枚举的每一个值 都是该枚举类的一个实例.枚举类型是作为Java语言的一部分,是完全类型安全的, 编译器会帮助我们检查枚举类型的正 ...

  8. Spring data mongodb 替换 Repository 实现类,findAll 排除 字段

    因文档比较大,有时候findAll 不想返回所有数据.没有找到默认的findAll 能够include 或者 exclude 的方法,所以想办法扩展一下实现类 query.fields().inclu ...

  9. TableLayoutPanel居中和单元格内元素居中

    在后台程序新建一个TableLayoutPanel 添加到form中,默认显示在左上角,想了很多让它居中的办法,在网上找了不少 最好的是: winform要设置控件的位置有3种: 1.控件的ancho ...

  10. vue项目中对axios的二次封装

    近来在使用vue重构公司m站时,使用了axios来进行数据的请求,由于项目的需要,对axios进行了二次封装,点击进入axios //引入axios import axios from 'axios' ...