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. 大白dmeo (转的)

    <!doctype html><html> <head> <meta charset="utf-8"> <title>B ...

  2. 【NOI2013】快餐店 环套树+线段树

    题目大意:给你一颗环套树,你要在这棵的边上(包括端点)找一个点,使得离该点最远的点最近. 数据范围:$n≤10^5$,边权$≤10^9$. 此题不难看出一种暴力做法,我们依次断开环上的一条边,然后求整 ...

  3. 【poj1850】 Code 数位dp+记忆化搜索

    题目大意:给你一个字符串,问你这个字符串的rank,如果这个字符串不合法,请直接输出0.(一个合法的字符串是对于∀i,有c[i]<c[i+1]) 字符串s的rank的计算方式:以字符串长度作为第 ...

  4. CPM(Cluster Percolation method)派系过滤算法

    一.概念 (1)完全子图/全耦合网络/k-派系:所有节点全部两两相连 图1 这些全耦合网络也成为派系,k-派系表示该全耦合网络的节点数目为k 1)k-派系相邻:两个不同的k-派系共享k-1个节点,认为 ...

  5. Windows10下搭建TensorFlow环境

    转载请注明源出处:http://www.cnblogs.com/lighten/p/6753695.html 这篇文章介绍了一下在Windows上安装TensorFlow的步骤,主要是翻译了一下官方的 ...

  6. 数据库-SQLite简介

    SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库(轻型数据库). 由于资源占用少.性能良好和零管理成本,嵌入式数据库有了它的用武之地,像Android.iPhone都有内置的S ...

  7. 机器学习--boosting家族之XGBoost算法

    一.概念 XGBoost全名叫(eXtreme Gradient Boosting)极端梯度提升,经常被用在一些比赛中,其效果显著.它是大规模并行boosted tree的工具,它是目前最快最好的开源 ...

  8. 自动换行的两种代码(C#)

    最近有个需求,需要将C# winform中的listBox中的内容自动换行, 其实在用listBox前,已经用textBox实现了大部分功能,可惜最后还是有个焦点的问题, 就是textBox中的文字会 ...

  9. Tornado简介

    Tornado是一个具有强大异步功能的Python Web框架. Hello World 使用pip安装tornado: pip install tornado 编写控制器: import torna ...

  10. 使用 RetroShare 分享资源

    本文告诉大家如何使用 RetroShare 来分享资源.因为 RetroShare 是一个 p2p 分享的工具,所以他比现在很多云盘都好用,在网上,很多大神说可以用来代替电驴.之所以推荐这个软件,因为 ...