Python的切片(slice),真正的高级,龟叔牛p

一、切片的定义

Python的切片,用一句话可以概括:

将一个可迭代的数据集(list,tuple,dict,str等等等),有规律的分割出子集。

切片,极大缩短了Python的代码量,提升了Python代码的简洁性。

英语叫做slice,非常形象。

二、切片的语法和用法

切片可以表达为:

数据集名[from:end:step]

其中,from表示数据集切割的起始位置下标(索引,index),end为切割的终了位置下标的后一位,step为下标递进的步长。数据集可以是任何可迭代数据结构。

记住,切割的顺序一致是从左至右,(从前至后)。

举例说明:

取一个List列表L的前N个元素

        L[0:N] #表示从索引0开始,到N-1为止。

如果第一个索引是0,则可以简写为:

        L[:N]

从索引M开始,取出N-M个元素

        L[M:N]

负数表达的切片

        L[-2:]  L[-2:-1]

再比如:对于L = list(range(100))

则:

前10个数:

        L[:10]

后10个数:

        L[-10:]

前11-20个数:

        L[10:20]

前10个数,每两个取一个:

        L[:10:2]

所有数,每5个取一个

        L[::5]

所有奇数的数

        L[1::2]

所有偶数的数

        L[::2]

复制list:

         L[:]

tuple也可以切片。

例如:(0, 1, 2, 3, 4, 5)[:3] 表示(0,1,2)

字符串也可以切片,结果仍然是字符串

例如:'ABCDEFG'[:3]表示'ABC'

三、切片练习

利用切片操作,实现一个trim()函数,去除字符串首尾的空格

测试代码如下:

# 测试:
if trim('hello  ') != 'hello':
    print('测试失败!')
elif trim('  hello') != 'hello':
    print('测试失败!')
elif trim('  hello  ') != 'hello':
    print('测试失败!')
elif trim('  hello  world  ') != 'hello  world':
    print('测试失败!')
elif trim('') != '':
    print('测试失败!')
elif trim('    ') != '':
    print('测试失败!')
else:
    print('测试成功!')

答案是:

 def trim(s):
     if s == '':
         return s
     if s[0] != ' ' and s[-1] != ' ':
        return s
     if s[0] == ' ':
        return trim(s[1:])
     if s[-1] == ' ':
         return trim(s[:-1])

 学会了就点个赞吧。

你可能感兴趣的:(Python程序设计教程,python,开发语言)