1.为什么要学习切片【切片是解决何种问题的?】

(2)对于含有元素很少的list,我们遍历其前三个元素,通常可以这样来实现:

#遍历list,取其中索引为【0】、【1】、【2】的元素:
L = ['Xiaoming','Xiaohong','Xiaolan','Xiaowang','Xiaozhang']
a = [L[0],L[1],L[2]]
print(a)
------------------------------------------------------------------ #运行结果:
['Xiaoming','Xiaohong','Xiaolan']
 

(2)显然上述方法,对于取前N(若N很大)个元素的list来说,是比较麻烦的,可以通过循环来进行遍历:

#使用循环遍历前3个元素:
L = ['Xiaoming','Xiaohong','Xiaolan','Xiaowang','Xiaozhang']
r = []
n = 3
for i in range(n):
r.append(L[i])
print(r)
----------------------------------------------------------------------------------------
#打印结果:
['Xiaoming','Xiaohong','Xiaolan']

虽然这种方法较第一种比较好了,但是对于经常取指定索引的操作,循环还是有点繁琐,因此python提供了切片(slice)操作符

2.切片操作符解读

#切片操作符的使用:
L = ['Xiaoming','Xiaohong','Xiaolan','Xiaowang','Xiaozhang']
print(L[0:3])
----------------------------------------------------------------------
#运行结果:
['Xiaoming','Xiaohong','Xiaolan'] ----------------------------------------------------------------------
#含义解读:
L[0:3]:表示从索引0开始,到索引3为止,但不包括索引3,也就是取索引[0] [1] [2]
L[:3]:若第一个索引是[0],可以省略
L[1:3]:从索引1开始取2个元素 #切片还可以从倒数的位置开始取,记住倒数第一的数的索引位置是-1,例如:
L[-2:]:取倒数两个元素
L[-1:]:取倒数第一个元素
L[-2:-1]:取倒数第一个元素
------------------------------------------------------------------------
#间隔取:
#!/usr/bin/env python3
# -*- coding: utf-8 -*- #创建一个0-99的数列
L = list(range(100)) #取前10个数:
print( L[:10] )
---->[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
#取后10个数:
print( L[-10:] )
---->[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
#取前11-20个数字:
print( L[10:20] )
---->[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
#取前10数,每两个取一个:
print( L[:10:2] )
---->[0, 2, 4, 6, 8]
#所有数,每五个取一个:
print( L[::5] )
---->[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
#只写[:]就是原样复制一个list:
print( L[:] )

3.其他知识

(1)字符串'xxxx'也可以看成一种list,每个元素就是一个字符,可以用切片操作,操作结果认为字符串:

#对字符串进行切片操作,取前三个字母
a = 'abcdefg'[:3]
print(a) #运行结果【仍为字符串】
---->abc

(2)tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple:

#对tuple进行切片操作
t = (0,1,2,3,4,5,6,7,8)[:4]
print(t) #运行结果:
---->(1,2,3,4)

4.练习【利用切片操作,实现一个trim()函数,去除字符串首尾的空格】

思路:有以下几种情况:

(1)空字符串  、(2)首尾均无空格:通过if进行匹配并返回字符串本身:

 if(s == '' or (s[0:1]!=' ' and s[-1:]!=' ')): #判断是否是(1) (2)情况,若是返回本身
return s

(3)字符串段首有空格:

elif s[0:1]==' ':#判断是否属于(3)情况,若是利用迭代,逐一切片
return trim(s[1:])

(4)字符串段尾有空格:

else :            #判断是否属于(4)情况,若是利用迭代,逐一切片
return trim(s[:-1] )

(5)首尾均有空格:先匹配情况(3)、然后匹配情况(4)

完整代码:

#!/usr/bin/env python3
# -*- coding: utf-8 -*- def trim(s):
if(s == '' or (s[0:1]!=' ' and s[-1:]!=' ')): #判断是否是(1) (2)情况,若是返回本身
return s
elif s[0:1]==' ':#判断是否属于(3)情况,若是利用迭代,逐一切片
return trim(s[1:])
else : #判断是否属于(4)情况,若是利用迭代,逐一切片
return trim(s[:-1] ) a = trim('')
b = trim('wang')
c = trim(' wang')
d = trim('wang ')
e = trim(' wang ')
f = trim(' ')
print('a=',a)
print('b=',b)
print('c=',c)
print('d=',d)
print('e=',e)
print('f=',f) -------------------------------------------------------------------------------
#运行结果:
---->a=
---->b= wang
---->c= wang
---->d= wang
---->e= wang
---->f=

python之切片的更多相关文章

  1. python基础——切片

    python基础——切片 取一个list或tuple的部分元素是非常常见的操作.比如,一个list如下: >>> L = ['Michael', 'Sarah', 'Tracy', ...

  2. python中切片的理解

    Python中什么可以切片 l  Python中符合序列的有序序列都支持切片(slice) l  如:列表,字符,元祖 Python中切片的格式 l  格式:[start : end : step] ...

  3. Python字符串切片操作知识详解

    Python字符串切片操作知识详解 这篇文章主要介绍了Python中字符串切片操作 的相关资料,需要的朋友可以参考下 一:取字符串中第几个字符 print "Hello"[0] 表 ...

  4. Python中切片的应用

    Python中切片的应用 Python中可以通过切片实现对列表或者字符串取指定范围的操作,实际就是通过对列表或者字符串通过索引进行操作. 具体细节点击廖雪峰Python教程,其中的课后小问题在此记录下 ...

  5. Python 的切片为什么不会索引越界?

    切片(slice)是 Python 中一种很有特色的特性,在正式开始之前,我们先来复习一下关于切片的知识吧. 切片主要用于序列对象中,按照索引区间截取出一段索引的内容. 切片的书写形式:[i : i+ ...

  6. Python札记 -- 切片赋值

    一.疑惑    今天在看<Python Cookbook>第四章Python技巧的4.7小节时,发现一段初看起来让人疑惑的代码.该小节的任务是将一个包含列表(行)的列表,转换成一个新的列表 ...

  7. Python学习笔记(五)Python的切片和迭代

    切片 Python提供了切片操作符,可以对list.tuple.字符串进行截取操作. list中的切片应用 语法如下: >>> L = ['Michael', 'Sarah', 'T ...

  8. Python 函数 切片 迭代 列表生成器

    函数 编写     定义一个函数要用def语句    def sum(i,n):   ⚠有冒号 返回多值     实际上是返回一个tuple 定义默认参数    默认参数的作用是简化调用   def ...

  9. python的切片操作

    切片操作符是序列名后跟一个方括号,方括号中有一对可选的数字,并用冒号分割.注意这与你使用的索引操作符十分相似.记住数是可选的,而冒号是必须的. 切片操作符中的第一个数(冒号之前)表示切片开始的位置,第 ...

  10. Python中切片的工作原理

    切片时的索引是在两个字符之间.左边第一个字符的索引为 0,而长度为 n 的字符串其最后一个字符的右界索引为n. 例如: +---+---+---+---+---+---+ | P | y | t | ...

随机推荐

  1. Java并发编程实践读书笔记(5) 线程池的使用

    Executor与Task的耦合性 1,除非线程池很非常大,否则一个Task不要依赖同一个线程服务中的另外一个Task,因为这样容易造成死锁: 2,线程的执行是并行的,所以在设计Task的时候要考虑到 ...

  2. 【BZOJ1069】【SCOI2007】最大土地面积

    题目大意:给定有n个点的点集,求该点集中任意四个点所构成的四边形中面积最大四边形的面积. 我们不难想到(不难yy出来),面积最大的四边形的四个顶点一定所给定的点集所构成的凸包上.我们求出给定点集的集合 ...

  3. 简单shell expect程序

    1 expect程序 用的Ubuntu,本身没带expect,安装. sudo apt-get install expect (关于expect,参见http://www.tclchina.com/a ...

  4. 我的Git教程 之 初始化本地库

    初始化本地库 前言:这个教程只适用于像我一样大致理解Git的原理,但是不太记得住Git命令的同学使用.所以具体原理只会提一下,具体可以参见Pro Git.同时,下面的操作需要先安装相应的Git工具,具 ...

  5. 慕课网Python基础学习整理

    # -*- coding: utf-8 -*- """# Python的注释以 # 开头,后面的文字直到行尾都算注释;多行注释开头3个 " 结尾3个 " ...

  6. Windows环境下执行hadoop命令出现Error: JAVA_HOME is incorrectly set Please update D:\SoftWare\hadoop-2.6.0\conf\hadoop-env.cmd错误的解决办法(图文详解)

    不多说,直接上干货! 导读   win下安装hadoop 大家,别小看win下的安装大数据组件和使用  玩过dubbo和disconf的朋友们,都知道,在win下安装zookeeper是经常的事   ...

  7. 11 - JavaSE之GUI

    GUI(念法 gu yi) AWT AWT(Abstract Window Toolkit 抽象窗口开发包,在C# 或者 linux窗口开发类之上又封装一层,达到跨平台的目的)包括了很多类和接口,用于 ...

  8. 自然语言处理--TF-IDF(关键词提取)

    TF-IDF算法 TF-IDF(词频-逆文档频率)算法是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度.字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它 ...

  9. python中不可变数据类型和可变数据类型

    在学习python过程中我们一定会遇到不可变数据类型和可变数据类型. 1.名词解释 以下所有的内容都是基于内存地址来说的. 不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址 ...

  10. Fiddler HTTPS抓包

    现在很多带有比较重要信息的接口都使用了安全性更高的HTTPS,而Fiddler默认是抓取HTTP类型的接口,要想查看HTTPS类型接口就需要安装fiddler证书.   fiddler安装教程可参考: ...