博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Python学习笔记】切片和迭代
阅读量:6409 次
发布时间:2019-06-23

本文共 2840 字,大约阅读时间需要 9 分钟。

hot3.png

Python的高级特性之切片和迭代

1、切片

切片操作符是序列名后跟一个方括号,方括号中有一对可选的数字,并用冒号分割。

数是可选的,而冒号是必须的

切片操作符中的第一个数(冒号之前)表示切片开始的位置,第二个数(冒号之后)表示切片到哪里结束,第三个数(冒号之后)表示切片间隔数。如果不指定第一个数,Python就从序列首开始。如果没有指定第二个数,则Python会停止在序列尾。注意,返回的序列从开始位置开始 ,刚好在 结束 位置之前结束。即开始位置是包含在序列切片中的,而结束位置被排斥在切片外

#!/usr/bin/env python#-*- coding:utf-8 -*-import math# ★★★★★切片Slice,适用于list,tuple,字符串★★★★★# 构造一个列表LL = []n = 0while n <= 30:    L.append(n)    n += 2print u'列表:',L# 取前N个元素,索引值0-(N-1)r = []N = 3for n in range(N):    r.append(L[n])print u'循环取前三个元素:',r# 使用切片法,取list和tuple某范围内元素。L[m:n]表示从索引下标为m开始,取到索引下标为n-1# 取前三个元素rr = L[0:3]# 而且还能说明list切片的返回值是listprint u'切片取前三个元素:',rr# 如果第一个索引是0,还可以省略rr = L[0:3]print u'切片取前三个元素:',rr# 取后三个元素rr = L[len(L)-3:len(L)]print u'切片取后三个元素:',rr# Python支持倒数取元素值,类似的,python也支持倒数切片rr = L [0:-3]# 倒数第一个元素的索引为-1print u'切片取除了后三个元素:',rr# 如果一直取到最后,第二个参数可以省略rr = L [-3:]print u'切片取后三个元素:',rr# 如果两个参数都省略,相当于复制listrr = L [:]print u'列表:',rr# 也还可以有其他复杂的操作# 前10个数,每两个取一个rr = L[:10:2]print u'前10个数,每两个取一个:',rr# 所有数,每三个取一个rr = L[::3]print u'所有数,每三个取一个:',rr# tuple与list唯一的区别就是tuple不可变,因此也可以对tuple进行切片操作,类似的,切片的结果是tupleT = (1,2,3,4)tt = T[-3:-1]print tt# 字符串'xxx'和u'xxx'可以看成是一种list,每个字符就是它的一个元素,然后可以对字符串进行切片操作,切片的结果仍是字符串string = 'abcd'ss = string[-3:-1]print ss

运行效果:221236_GSIA_2913386.png

2、迭代

先搞清楚几个概念:循环,迭代,递归,遍历

循环(loop),指的是在满足条件的情况下,重复执行同一段代码。比如,while语句。

迭代(iterate),指的是按照某种顺序逐个访问列表中的每一项。比如,for语句。
递归(recursion),指的是一个函数不断调用自身的行为。比如,以编程方式输出著名的斐波纳契数列。
遍历(traversal),指的是按照一定的规则访问树形结构中的每个节点,而且每个节点都只访问一次。

迭代:就是通过for...in循环进行遍历

for...in循环不仅可以用在有索引下标值的list和tuple,也可以用在无索引下标值的dict,set,字符串等
for...in,in后面应是可迭代对象

#!/usr/bin/env python#-*- coding:utf-8 -*-import mathfrom collections import Iterable# 判断一个对象是否为可迭代对象的方法# 导入collections模块的Iterable类型:from collections import Iterableprint isinstance([1,2,3],Iterable)#listprint isinstance((1,2,3),Iterable)#tupleprint isinstance({'k1':1,'k2':2,'k3':3},Iterable)#dictprint isinstance(set("abc"),Iterable)#setprint isinstance('abc',Iterable)#str# 迭代list#L = [1,2,3]for i in [1,2,3]:    print u'list:',i# 迭代tupleT = (1,2,3)for i in T:    print u'tuple:',i# 迭代dictD = {'k1':1,'k2':2,'k3':3}for k in D:    print u'dict:',k# 上例说明,默认迭代的是key# 如果要迭代value,可以用for value in D.itervalues()for v in D.itervalues():    print u'dict:',v#如果要同时迭代key和value,可以用for k, v in d.iteritems()for k,v in D.iteritems():    print u'dict:',k,':',v# 迭代setS = set("abc")for s in S:    print u'set:',s# 迭代strSS = 'abc'for ss in SS:    print u'str:',ss# 对list实现利用下标进行循环# 内置的enumerate()函数可以把list变成索引-元素对,这样就可以像其他语言那样同时迭代索引和元素L = [1,2,3]for i in enumerate(L):    print u'list:',i# list: (0, 1)# list: (1, 2)# list: (2, 3)# 事实证明enumerate()是把list变成了(索引,元素)这样的数据对,但是enumerate()返回的结果并不是数据对for i,v in enumerate(L):    print u'list:',i,'-',v# 推广:经常会用到对数据对的引用# for...in,in后面应是可迭代对象for x,y in [(0,'a'),(1,'b'),(2,'c')]:    print u'数据对:',x,'-',y

运行效果:

221906_lUf3_2913386.png

转载于:https://my.oschina.net/MasterLi161307040026/blog/746968

你可能感兴趣的文章
SVG 扬帆起航
查看>>
NET Core-学习笔记(二)
查看>>
职业生涯上的点点滴滴
查看>>
Linux下添加新硬盘,分区及挂载
查看>>
一起来将vscode变成私人定制笔记本
查看>>
Flutter 云音乐
查看>>
RecyclerView实现多type页面
查看>>
个人的web商城网站
查看>>
debian fcitx
查看>>
排中律与实无穷问题的性质分析
查看>>
08/23 学习总结
查看>>
物理层
查看>>
linux多网卡路由设置
查看>>
八大监听器
查看>>
self.navigationController退出到指定页面,或者一次性pop出n个页面
查看>>
Quartz实现数据库动态配置定时任务
查看>>
iptables 端口转发以及双向通信
查看>>
备战一线互联网公司Java工程师面试题 (1)
查看>>
ThinkPHP中自动验证失败
查看>>
jquery图片切换插件jquery.cycle.js参数详解
查看>>