Python高级特性:切片
2024-10-11 05:10:22
切片的目的是实现取一个list或tuple的部分元素
学习自廖雪峰,个人理解如下: 取列表L的前三个元素 >>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] -----------------------------------------------------------
方法一:
笨办法: >>> [L[], L[], L[]]
['Michael', 'Sarah', 'Tracy']
之所以是笨办法是因为扩展一下,取前N个元素就没辙了。
------------------------------------------------------------
方法二:
取前N个元素,也就是索引为0-(N-)的元素,可以用循环: >>> r = []
>>> n =
>>> for i in range(n):
... r.append(L[i])
...
>>> r
['Michael', 'Sarah', 'Tracy']
对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。
循环也是不错的方式,不过下面Python提供现成的实现方式 -------------------------------------------------------------
对应上面的问题,取前3个元素,用一行代码就可以完成切片: >>> L[:]
['Michael', 'Sarah', 'Tracy']
L[:]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,,,正好是3个元素。 如果第一个索引是0,还可以省略: >>> L[:]
['Michael', 'Sarah', 'Tracy']
也可以从索引1开始,取出2个元素出来: >>> L[:]
['Sarah', 'Tracy']
类似的,既然Python支持L[-]取倒数第一个元素,那么它同样支持倒数切片,试试: >>> L[-:]
['Bob', 'Jack']
>>> L[-:-]
['Bob']
记住倒数第一个元素的索引是-。 切片操作十分有用。我们先创建一个0-99的数列: >>> L = list(range())
>>> L
[, , , , ..., ]
可以通过切片轻松取出某一段数列。比如前10个数: >>> L[:]
[, , , , , , , , , ]
后10个数: >>> L[-:]
[, , , , , , , , , ]
前11-20个数: >>> L[:]
[, , , , , , , , , ]
前10个数,每两个取一个: >>> L[::]
[, , , , ]
所有数,每5个取一个: >>> L[::]
[, , , , , , , , , , , , , , , , , , , ]
甚至什么都不写,只写[:]就可以原样复制一个list: >>> L[:]
[, , , , ..., ]
tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple: >>> (, , , , , )[:]
(, , )
字符串'xxx'也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串: >>> 'ABCDEFG'[:]
'ABC'
>>> 'ABCDEFG'[::]
'ACEG'
最新文章
- 重装Ubuntu16.04及安装theano
- svn 忽略文件不管用
- 17、文案人员 - IT软件人员书籍系列文章
- svg学习(八)polyline
- Android——ProgressDialog 进度条对话框
- 在一个字符串(1<;=字符串长度<;=10000,全部由大小写字母组成)中找到第一个只出现一次的字符,并返回它的位置
- sencha architect/sencha touch , to prevent breakpoint lost when you debug
- GIT学习(一)-->;Git产生的历史原因
- |,&;,<;<;,>;>;运算符
- MIP开发教程(二) 使用MIP-CLI工具调试MIP网页
- day11.2lambda函数表达式 及其返回值注意事项
- 遍历删除查临时表相关session再操作表
- CentOS7+CDH5.14.0安装全流程记录,图文详解全程实测-2设置SSH免密登录
- Newtonsoft.Json 时间格式化
- android ncnn
- js里用append()和appendChild有什么区别?
- ssl,proxy;部分http部分https;80,443,8080;nginx+tomcat;
- CentoOS6.6安装netcat
- HDU 1234:开门人和关门人
- samtools软件的使用