python下标

首先先了解下python3.7中的下标

python下标有两套,一套是正的,一套是负的

引入负坐标的意义

方便将数组中的数据从右往左访问

a='python’中的python 的下标描述如下

组 p y t h o n
正下标 0 1 2 3 4 5
负下标 -6 -5 -4 -3 -2 -1

对应位置的正下标减去负下标等于len(a) :正下标-负下标=len(a)
使用正下标时,下标i取值范围为0 <= i < len(a) 超出范围为越界,i大于len(a)表示越(数轴)右界
使用负下标时,下标i取值范围为-len(a)-1 < i <=-1 超出范围为越界,i小于len(a)表示越(数轴)左界

数组操作中一般通过 “:” 和数字或变量的组合来灵活使用里面的元素
第一个“:” 表示循环,第二个“:” 表示设定后面数字为步长 比如i:j:k,表示从i到j步长为k,逐个顺次获取。i到j满足左闭右开原则 。
没有冒号表示正常的数组单个元素访问;没有第二个冒号就表示默认的步长为1,从i到j左开右闭步长为1逐个访问。

1、k缺省(忽略未写出的默认值)为1;

当k>0时,i缺省为0,j缺省为len(a) ; 当k<0时,i缺省为-1,j缺省为-len(a)-1。

2、当k>0时,可以将i,j全转换成正下标去理解。

当i或j为正且越正数下标右界时,越界的数全部取正下标右界len(a)。
当i或j为负且越负数下标的左界时,越界的数全部取左界前的有效值-len(a),然后再转换成正下标,转换规则为:正下标=len(a)+负下标。

3、当k<0时,可以将i,j全部转换成负下标去理解。

当i或j为负且越负数下标左界时,越界的数全部取负下标左界-len(a)-1。
当i或j为正且越正数下标右界时,越界的数全部取右界前的有效值len(a)-1,然后再转换为负下标,转换规则为:负下标=正下标-len(a)。
4、k不能等于0。

对于循环操作中下标的操作应该先处理越界,然后再根据的正负转换成对应的正负坐标。
a='python'   #len(a)=6
i=1
j=4
k=1
b=a[i:j:k]  #结果为yth  。意思为从下标i个开始到下标j-1结束,步长为k,(k为整数且不能等于0,缺省为1),第一个冒号满足左闭右开原则 。
b=a[i]      #结果为y ,无冒号,表示普通的数组单个元素访问,根据下标获取值。
b=a[-1]     #结果为n。
b=a[-6]     #结果为p。
b=a[i:j]    #结果为yth,从i到j,步长为缺省(默认)1 
b=a[0:6:1]  #结果为python,第一个冒号满足左闭右开原则,等价于a[::]
b=a[0:6:2]  #结果为pto,步长为2,等价于a[::2]
b=a[1:6:3]  #结果为yo,步长为3,等价于a[::3]
b=a[0:3:1]  #结果为pyt,第一个冒号满足左闭右开原则,下标为3的值是取不到的
b=a[0:5:1]  #结果为pytho,第一个冒号满足左闭右开原则
b=a[0:7:1]  #结果为python,等价于a[0:6:1],当第一个冒号右边的值大于len(a)时,
b=a[0:100:1]#结果为python,此处正下标越界,等价于a[0:6:1],注意第一个冒号右边的100已经超越了正下标的右限。
b=a[6:100:1]#结果为空,等价于a[6:6:1],注意第一个冒号左右边都已经超越了正下标的右限
b=a[7:100:1]#结果为空,等价于a[6:6:1],注意第一个冒号左右边都已经超越了正下标的右限
b=a[-6:6:1] #结果为python,等价于a[0:6:1]
b=a[-7:6:1] #结果为python,左闭右开,此处负下标越界,等价于a[-6:6:1]=a[0:6:1]
b=a[-100:6:1]#结果为python,注意-100已经超过了负下标的左限,等价于a[-6:6:1]=a[0:6:1]
b=a[-100:100:1]#结果为python,注意-100已经超过了负下标的左限,等价于a[-6:6:1]=a[0:6:1]
b=a[-6:-1:1]#结果为pytho,等价于a[0:5:1],注意,-6转换成正坐标为0,-1转换为正坐标为5.
b=a[-100:-1:1]#结果为pytho,注意-100已经超过了负下标的左限,等价于a[-6:-1:1]=a[0:5:1]
b=a[0:-1:1]#结果为pytho,等价于a[0:5:1]
b=a[0:-100:1]#结果为空,注意-100已经超过了负下标的左限,等价于a[0:-6:1]=a[0:0:1]
b=a[0:-6:1] #结果为空,等价于a[0:0:1]
b=a[0:-7:1] #结果为空,等价于a[0:0:1]
b=a[:j] #结果为pyth。k缺省(默认)为1,k大于0时,i缺省(默认)为0,j缺省(默认)为len(a)
b=a[i:] #结果为ython,表示从下标i开始到最后一个(下标为len(a)-1)
b=a[:]  #结果为python,等价于a[0:6:1],表示从下标0开始到最后一个结束,步长为1。
b=a[::] #结果为python。等价于a[0:6:1]。a[i:j:k]中,k缺省为1,当k大于0时,i缺省为0,j缺省为len(a)。
b=a[::10] #结果为p。等价于a[0:6:10]。a[i:j:k]中,当k大于0时,i缺省为0,j缺省为len(a)
 
k为负,表示从右往左顺次获取数组中的值,转换成负下标后,-len(a)-1<=j<i<=-1才能获取到值。
b=a[i:j:-1]  #结果为空,等价于a[1:4:-1]=a[-5:-2:-1]
b=a[-1:-7:-1]#结果为nohtyp,第一个冒号满足左闭右开原则。
b=a[-1:-100:-1]#结果为nohtyp,负下标越界,等价于a[-1:-7:-1]
b=a[4:0:-1] #结果为ohty,k为负数,将i,l转换成负下标理解,等价于a[-2:-6:-1],注意4转换成负下标为-2,0转换成负下标为-6
b=a[4:-1:-1]#结果为空,可以理解为a[-2:-1:-1]
b=a[4:-100:-1]#结果为ohtyp,k为负,将i转成负下标理解,同时j越界,等价于a[-2:-100:-1]=a[-2:-7:-1]
b=a[-1:0:-1]#结果为nohty,可以理解为a[-1:-6:-1]
b=a[0:-1:-1]#结果为空,可以理解为a[-6:-1:-1]
b=a[0:-2:-1]#结果为空 ,可以理解为a[-6:-2:-1]
b=a[-2:0:-1]#结果为ohty,可以理解为a[-2:-6:-1]
b=a[-1:6:-1]#结果为空,可以理解为a[-1:5:-1]=a[-1:-1:-1]
b=a[-1:100:-1]#结果为空,可以理解为a[-1:5:-1]=a[-1:-1:-1]
b=a[6:100:-1]#结果为空,可以理解为a[5:5:-1]=a[-1:-1:-1]
b=a[4:100:-1]#结果为空,可以理解为a[4:5:-1]=a[-1:-1:-1]
b=a[100:100:-1]#结果为空,可以理解为a[5:5:-1]=a[-1:-1:-1]
b=a[100:4:-1]#结果为n,可以理解为a[5:4:-1]=a[-1:-2:-1]
b=a[100:-100:-1]#结果为nohtyp,可以理解为a[5:-7:-1]=a[-1:-7:-1]
b=a[100:0:-1]#结果为nohty,可以理解为a[5:0:-1]=a[-1:-6:-1]
b=a[-100:100:-1]#结果为空,可以理解为a[-7:6:-1]=a[-7:-1:-1]
b=a[:-1]  #结果为pytho ,等价于a[0:5:1]
b=a[::-1] #结果为nohtyp,等价于a[-1:-len(a)-1:-1] = a[-1:-7:-1]
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾-光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值