python 之 切片(slice)

在python中有一个高级特性称之为切片,其实之前我们在学习java的时候也接触过Substring方法(俗称取子串),而切片则和substring比较相似。
假如说我们要获取列表或元组中的某个特定(全部)元素时,我们可以通过元素下标来使用,如:

alist = [3,4,5,6]
print(alist[0])           #获取alist中的第一个元素

当我们遇到大量的数据的时候,使用元素下标来获取整个列表的值就比较繁琐,这个时候我们一般会采用for循环来解决:

alist = [3,4,5,6,7,9,11,13,15,17]
for item in alist:
    print(item)

其实吧,这里可以采用更简单的方法,就是使用切片:

alist = [3,4,5,6,7,9,11,13,15,17]
alist[::]

那么问题来了,中间的两个分号代表着什么呢?
我们可以通过python官网查一下slice的用法:
python内置函数slice
得知slice的用法: slice(start, stop[, step])
其中:切片使用2个冒号分割的3个数字来完成;
第一个数字表示切片开始位置(默认为列表长度);
第二个数字表示切片截止(但不包括)位置(默认为列表长度);
第三个数字表示切片的步长(默认为1),当步长省略时可以顺便省略最后一个冒号。
下面我们通过以下例子来深入了解一下其用法:

alist[::-1]      #逆序的所有元素
alist[::2]      #偶数位置,隔一个取一个
alist[1::2]       #奇数位置,隔一个取一个
alist[3::]     #从下标3开始的所有元素
alist[3:6]       #下标在[3,6]之间的所有元素
alist[0:100:1]     #前100个元素,自动截断
alist[100:]       #下标100之后的所有元素,自动截断
# alist[100]         #直接使用下标访问会发生越界
alist[100:]

以上是通过切片获取值的用法,当然,既然获取了值,我们同样也可以用切片来原地修改列表内容,下面同样通过代码来演示以下:

alist = [3,5,7]
alist[ len(alist): ] = [9]     #在尾部追加元素
print(alist)
alist[:3] = [1,2,3]   #替换前三个元素
print(alist)

alist[:3] = []    #删除前三个元素
print(alist)

#使用del与切片结合来删除列表元素
alist = [3,5,7,9,11]
del alist[:3]       #删除前三个元素
print(alist)

需要注意的是,我上面仅仅是以列表为例,不是说切片只适用于列表,切片适用于列表、元组、字符串、range对象等类型,但作用于列表时功能最强大。

文章最后,总结一下切片的作用吧:

  1. 可以使用切片来截取列表中的任何部分,得到一个新列表
  2. 也可以使用切片来修改和删除列表中的部分元素
  3. 甚至可以通过切片操作为列表对象增加元素甚至可以通过切片操作为列表对象增加元素
  4. 切片操作不会因为下标越界而抛出异常,而是简单地在列表尾部截断或者返回一个空列表,代码具有更强的健壮

猜你喜欢

转载自blog.csdn.net/LES000LIE/article/details/83480208