切片

切片的语法表达式为:[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!'

python利器之切片的更多相关文章

  1. 在python&numpy中切片(slice)

     在python&numpy中切片(slice) 上文说到了,词频的统计在数据挖掘中使用的频率很高,而切片的操作同样是如此.在从文本文件或数据库中读取数据后,需要对数据进行预处理的操作.此时就 ...

  2. Python中的切片符

    最近在学python,感觉切片符有点难以理解.在网上查了点资料,然后做个总结 理解切片符,首先得知道数组是从0开始的, 而且切片符最后一个是-1. 我们先定义个数组   a=[1,2,3,4,5] 切 ...

  3. python迭代和切片

    from collections import Iterable #切片************************ # #取一个list或tuple的部分元素是非常常见的操作 ,Python提供 ...

  4. Python高级特性(切片,迭代,列表生成式,生成器,迭代器)

    掌握了Python的数据类型.语句和函数,基本上就可以编写出很多有用的程序了. 比如构造一个1, 3, 5, 7, ..., 99的列表,可以通过循环实现: L = [] n = 1 while n ...

  5. Python高级教程-切片

    Python中的切片 取一个list或tuple的部分元素是非常常见的操作.比如,一个list如下: >>> L = ['A','B','C','D'] 对经常取指定索引范围的操作, ...

  6. Python中的切片操作

    python中的切片操作功能十分强大,通常我们利用切片来进行提取信息,进行相关的操作,下面就是一些切片的列子. 列如我们从range函数1-100中取7的倍数,函数及结果如下所示: >>& ...

  7. Python利器一之requests

    Python利器一之requests 一.教程涉及开发语言.脚本.框架.数据库等内容 Python + requests 通过 pip 安装: pip install requests 通过 easy ...

  8. python的字符串切片技术

    听说过python的字符串切片技术吗?是不是听着超高级的?实际上,也不用想得太难,python的字符串切片技术就是将字符串的某些字符提取出来而已~ 字符串切片 字符串是一种序列类型,可以按序号访问其中 ...

  9. Python学习--06切片

    Python里提供了切片(Slice)操作符获取列表里的元素. 示例: >>> L = [1,2,3,4,5] # 取前2个元素,传统方法 >>> [L[0],L[ ...

随机推荐

  1. JavaScript金字塔打印

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. GitFlow入门

    1-概述 2-GitFLow分支介绍 2.1-master 分支 2.2-develop 分支 2.3-feature 分支 2.4-release 分支 2.5-hotfix 分支 3-GitFlo ...

  3. 语句:if语句、do-while语句、while语句、for语句、for-in语句、with语句、label语句、switch语句以及break和continue语句;

    ECMA-262规定了一组语句(也成为流控制语句),语句定义了ECMASript中的主要语法. 语句分类:条件分支语句.条件判断语句和循环语句 代码块:是一对包裹多行代码的花括号,代码块后不可加引号: ...

  4. 第八篇 CSS定位

    CSS定位 CSS除了内外边距控制元素,还有定位,看到“定位”两个字,同学们应该就能清楚,它能够做什么.   在刚学习的时候,我也经常使用定位,来控制元素的位置,但是初学的同学可能会注意不到定位的一些 ...

  5. HTTP/HTTPS协议 & GraphQL(非RESTFUL方式)

    HTTP访问控制-跨域资源共享(CORS) 缓存管理 HTTP VS HTTPS架构 TLS协议 HTTPS会话劫持 基于HTTP协议的服务器消息机制 1. Longpoll 2. SSE 3. We ...

  6. Mybatis常见面试题总结

    1.#{}和${}的区别是什么? ${}是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如${driver}会被静态替换为com.mysql.jdbc. ...

  7. lambda表达式推导和使用

    lambda λ希腊字母表中排序第十一位的字母,英语名称为 Lambda, 避免匿名内部类定义过多 其实质属于函数式编程的概念 (params) -> expression (params) - ...

  8. springboot-异步线程调用

    启动类:添加@EnableAsync注解 @SpringBootApplication @EnableAsync public class Application{ public static voi ...

  9. LVM使用手册简化命令

    创建 hot_add    --查看新增的lun pvcreate /dev/sdb   --创建物理卷 pvcreate /dev/sdc   --创建物理卷 pvcreate /dev/sdd   ...

  10. Java模板引擎性能对比

    模板引擎性能对比 从Github上翻到对JSP.Thymeleaf 3.Velocity 1.7.Freemarker 2.3.23几款主流模板的性能对比,总体上看,Freemarker.Veloci ...