切片

切片的语法表达式为:[start_index : end_index : step],其中:

  • start_index表示起始索引
  • end_index表示结束索引
  • step表示步长,步长不能为0,且默认值为1

切片操作是指按照步长,截取从起始索引到结束索引,但不包含结束索引(也就是结束索引减1)的所有元素。

  • python3支持切片操作的数据类型有listtuplestringunicoderange
  • 切片返回的结果类型与原对象类型一致
  • 切片不会改变原对象,而是重新生成了一个新的对象

下面列表为列:

图列一

一个简单的例子:

alist=['A','B','C','D','E','F']
①alist[0:4:1]
②alist[0:4]
结果:['A', 'B', 'C', 'D'] ①和②结果一样,因为步长有默认值为1
alist[0:4:2]
结果:['A', 'C']

省略start_index,保留end_index,这样会从第一个元素开始,切到end_index - 1的元素为止

alist[:4]
['A', 'B', 'C', 'D']

保留start_index,但省略end_index,这样会从起始索引开始,切到最后一个元素为止:

alist[2:]
['C', 'D', 'E', 'F']

省略start_indexend_indexstep,这样就表示就表示切片整个序列,也就是复制出了一个新的序列:

 alist[:]
['A', 'B', 'C', 'D', 'E', 'F']

省略start_indexend_index,但保留step,表示对整个序列,按照步长整除的规则取值:

alist[::2]
['A', 'C', 'E']

此时,如果我们将步长设为-1,那么就可以很方便的得到一个反序的序列了:

 alist[::-1]
['F', 'E', 'D', 'C', 'B', 'A']

下面这四种表达式是等价的:

alist[0:4]
['A', 'B', 'C', 'D']
alist[0:-2]
['A', 'B', 'C', 'D']
alist[-6:4]
['A', 'B', 'C', 'D']
alist[-6:-2]
['A', 'B', 'C', 'D']

观察图列一就可以得出,区间一致。

切片时,一定要保证start_indexend_index的方向与步长step的方向同向,否则会切出空的序列:

alist[0:4:-1]
[]
alist[3:0:2]
[]

利用切片功能,编写一个函数trim(str),类似Python中的strip()功能——去除字符串首尾的空格:

>>> def trim(str):
... while str[:1]==' ':
... str = str[1:]
... while str[-1:] == ' ':
... str = str[:-2]
... return str
...
>>> trim(' abc hh welcome! ')
'abc hh welcome!'

最新文章

  1. React Ntive 学习手记
  2. DataTables 入门使用
  3. 【读书笔记】读《JavaScript设计模式》之门面模式
  4. http://stackoverflow.com/questions/12601907/loading-google-maps-in-anonymous-function
  5. node.js模块值formidable
  6. php学习代码杂记
  7. Treap的读书笔记2
  8. Socket 学习(三).2 udp 穿透 服务端 与 客户端 通讯
  9. Fiddler捕获localhost的网站
  10. python 基本认证
  11. (79)Wangdao.com第十五天_JavaScript 对象的继承_prototype原型对象_封装_函数式编程
  12. linux考试题改错
  13. 王之泰201771010131《面向对象程序设计(java)》第二周学习总结
  14. MFC中的Debug Assertion Failed 如何查找原因
  15. 浏览器的userAgent归纳
  16. threejs 世界坐标转化为屏幕坐标
  17. java中两种发起POST请求,并接收返回的响应内容的方式  (转)
  18. Spring Could与Dubbo、Docker、K8S
  19. Settings app简单学习记录
  20. 纪中OJ 2019.01.25【NOIP提高组】模拟 B 组 T2 数字对

热门文章

  1. 剑指offer-和为S的连续正数序列-知识迁移能力-python
  2. vue运行碰到的问题
  3. Spring的基本应用(1):IDEA版本
  4. 11 Python之初识函数
  5. Altium Designer16 如何分别导出TOP层和BOTTOM层
  6. ES6基本常见语法
  7. 转载:elasticsearch入门篇
  8. 给定一个字符串,根据字符出现频率排序--Java实现
  9. UITableViewCell背景色.选中背景色,分割线,字体颜色设置
  10. adb进阶知识,如何过滤只查看某一个app的日志