需求:取手机号的后六位

str='15012345678'
就直接百度切片取手机号后六位就可以解决问题了
之后遇到问题就是用类似的处理思路
需要解决什么问题就百度什么
附上切片知识


1、基本概念

Python中符合切片并且常用的有:列表,字符串,元组。

下面那列表来说明,其他的也是一样的。

格式:[开头:结束:步长]

开头:当步长>0时,不写默认0。当步长<0时,不写默认-1

结束:当步长>0时,不写默认列表长度加一。当步长<0时,不写默认负的列表长度减一

步长:默认1,>0 是从左往右走,<0是从右往左走

遵循左闭右开原则,如:[0:9]等价于数学中的[0,9)

切片_数据

 

 

 切片_百度_02

 

 

 

 

 

切片_python_03

 

 切片_取值_04切片_二维_05

 

 

 切片_数据_06

 

 

numpy的切片操作,一般结构如num[a:b,c:d],分析时以逗号为分隔符,

逗号之前为要取的num行的下标范围(a到b-1),逗号之后为要取的num列的下标范围(c到d-1);

前面是行索引,后面是列索引。

如果是这种num[:b,c:d],a的值未指定,那么a为最小值0;

如果是这种num[a:,c:d],b的值未指定,那么b为最大值;c、d的情况同理可得。

切片_二维_07切片_python_08

 

 

 

 

 



# 字符串中用法
str = 'python'
print(str[::]) # python
print(str[::1]) # python
print(str[::2]) # pto 从左往右数,数2步,取一个值
print(str[::-1]) # nohtyp 从右往左数,数1步,取一个值,即:取全部值
print(str[::-2]) # nhy 从右往左数,数2步,取一个值

# 列表中用法
list = [1, 2, 3, 4 , 5, 6]
print(list[::]) # [1, 2, 3, 4, 5, 6]
print(list[::1]) # [1, 2, 3, 4, 5, 6]
print(list[::2]) # [1, 3, 5]
print(list[::-1]) # [6, 5, 4, 3, 2, 1]
print(list[::-2]) # [6, 4, 2]

# [n::-1] 示例
# 先找下标值n,再翻转(从右到左)取值
str = 'python'
list = [1, 2, 3, 4 , 5, 6]
print(str[1::-1]) # yp 先找到下标1的值:y,从右往左取值:yp
print(str[2::-1]) # typ 先找到下标2的值:t,从右往左取值:typ
print(list[1::-1]) # [2, 1] 先找到下标1的值:2,从右往左取值:[2, 1]
print(list[2::-1]) # [3, 2, 1] 先找到下标2的值:3,从右往左取值:[3, 2, 1]


 

逗号“,”分隔各个维度,“:”表示各个维度内的切片,只有:表示取这个维度的全部值,举例说明如下

1.二维数组

X[:,0]取所有行的第0个数据,第二维下标位0的所有数据,第0列(从0开始)

X[:,1] 取所有行的第1个数据

X[:,1:]第一维全部取,即所有行,列上从第一列开始取,不要第0列

X[1,:]是取第1维中下标为1的元素的所有数据,第1行(从0开始)

X[:2,1:]第一维取下标2之前的,即第2行之前(0,1两行),列上从第一列开始取,不要第0列

 

2.一维数组

s[i:j] 表示获取a[i]到a[j-1]

s[:-1]去掉最后一个字符

s[:-n]去掉最后n个字符

s[-2:]取最后两个字符

s[i:j:k]这种格式呢,i,j与上面的一样,但k表示步长,默认为1

s[::-1]是从最后一个元素到第一个元素复制一遍(反向)

 

3.三维数组

U[1,1,2]表示第一维取1,第二维取1,第三维取2

U[:,1,2]表示第一维全取,第二维取1,第三维取2

U[:,1:,2]表示第一维全取,第二维取1及1之后的所有值,第三维取2

U[:,1:,:2]表示第一维全取,第二维取1及1之后的所有值,第三维取2之前的值(0,1)