|Python新手小白低级教程|第十章:数据结构(一):索引与切片


前言

哈哈,我来了!这节课,我们要开始学习一个非同寻常的东西,叫做“数据结构”。什么是数据结构呢?让我们一起去看看吧!!

1.索引

进来就来了个下马危——这是啥?嘿嘿,别慌,我们来好好看看。
总所周知,有个叫变量的东西。那么,变量就只能沦为数字与文字的替身吗?不!变量不甘心,他还能提供“特殊service(服务)”。
话不多说,来看一个例子:

> message = "Python"
> message[0]

这就是大标题上的索引了。那么,接下来就是剖析时间。

(1)索引剖析

还是那段代码

> message = "Python"
> message[0]

代码第一行很简单,就是一个变量赋值罢了。但是,从第二行开始,就有点乱了:

message[0]

首先,分析一下格式:message[num]

这个num是指什么呢?我们先来看一下吧Python拉开,看一下它对应的num值(索引分布):

  0   1   2   3   4   5
+---+---+---+---+---+---+
  P   y   t   h   o   n
+---+---+---+---+---+---+

刚刚中括号里写的“0”对应的就是刚刚这个剖析版的P,所以它的输出不出意外,应该是“P”
在这里插入图片描述
推导一下,我们中括号是1,那就是y
中括号是2,那就是t
中括号是3,那就是h
中括号是4,那就是o
中括号是5,那就是n
中括号是6,那就是???
细心的朋友们发现了吗?它只有0~5,而没有第六号索引。
这就是一个很重要的点。

(2)索引位数([ ]中的num的限制)

这个很好记,字符串内有多少位字符(包括空格!!!),索引的最大值就是位数-1,且只能是整数。
那万一超过了索引值,会发生什么呢?
在这里插入图片描述
报错了!错误主要说的是“超过了索引的最大数值”。修改方式很简单,缩小里面的数值就可以了。

(3)索引是由0开始

大家上面也看到了,想要输出Python的第一个字符“P”没有用message[1],而是message[0]。这是因为Python将0设置为初始值。所以,这个一定要记住!

(4)索引值可以是负数

先来看看几个例子:
在这里插入图片描述
想不到,负数都能作为索引!要知道,负数在Python中并不常见。因为负数是以0为界线以下的数,常见的只能表示温度之类的。但是,Python也有复杂的一面——负数可以在索引、切片中频繁使用。话不多说,让我们看看负数是怎么计数的吧!

(5)负数算值方式

还是上面的例子,我们来认识一下负数的记值方式(可参考上文图片)

  0   1   2   3   4   5
+---+---+---+---+---+---+
  P   y   t   h   o   n
+---+---+---+---+---+---+
 -6  -5  -4  -3  -2  -1
 (-0)                  

负数的方式有点烦。我们来找一下规律:
首先,负数的索引不再是从0开始,而是从1开始。开始计数的方式也不一样:是从右往左。大家只要记住一句话:
正数索引左侧起,开始是0不要忌。
负数索引不要怕,右左计1没问题!

2.切片

(1)示例

老样子,先来看几个例子:
在这里插入图片描述
这有点让人懵逼:这切片是怎么做的?

>message = 'Python'
>message[0:2]
'Py'
>message = 'Python'
>message[3:5]
'ho'
>message = 'Python'
>message[1:-1]
'ytho'
>message = 'Python'
>message[2:-3]
't'
>message = 'Python'
>message[:2]
'Py'
message = 'Python'
message[2:]
'thon'

(2)工作原理剖析

1.前两行

>message = 'Python'
>message[0:2]
'Py'
>message = 'Python'
>message[3:5]
'ho'

这一段还是比较简单的。简单总结一下,结构如下:

变量 = 字符串
变量[开始字符索引:结束字符索引+1]#注意啦!加1!

这个很简单,大家可以多做几个,熟练一下。

2.中间两段

>message = 'Python'
>message[1:-1]
'ytho'
>message = 'Python'
>message[2:-3]
't'

看!出现负数了!不过别慌,波仔给你好好讲讲——
开始字符很简单,是一个平平常常的正数索引。但是,负数有点烦了:它的取值方式是这样:

message[整数开始符号:-(n+1)对应索引]

这样是不是有点抽象?
打个比方:-3对应的是h,但一旦中括号里出现了-3,那结束索引应该是-4(t)。这就直观多了~~~~
在这里插入图片描述
有同学问了:那万一开始就是负数呢?
很简单,那程序只会输出一个简简单单的负数索引所对应的字符。比如:

do you understand?

3.后两段

>message = 'Python'
>message[:2]
'Py'
message = 'Python'
message[2:]
'thon'

我晕,上来就是俩“残疾切片小哥”。哈哈,这个原理很简单。
如果省略中括号中“:”左边的数字,那Python就会以为我们要获取从0开始的字符串,到右边的为止。省略了“:”右边的数字,那么Python就会聪明地以为我们要取从“:”左边索引符开始的字符。

有的DCM可能会问:那万一光秃秃啥也没有,咋办?
简单,负负得正,Python会获取所有字符。
在这里插入图片描述
你学会了吗?

练习

1.1.1 凑词

给出以下5个单词:
the policeman’s son is a clever boy
提取其中的几个单词,使其输出“python”(注:python小写!)

1.1.2 提取

给出以下单词:
supermarket
(1)提取所有字符
(2)提取其中后6个词
(3)提取其中的per和mark,采用单词1_单词2的方式连接。
(4)提取其中的所有“r”字符,并连接起来

总结

到此,第十章的内容也精彩收尾!作为数据结构学习的第一节课,你能跟上我的结构吗?如果能,波仔给你点个赞!下节课,我们会学习更为复杂的列表,做好准备!
最后:制作不易,别忘了一圈三连,喜欢的点个关注哟!

Test Key

1.1.1 凑词

message_0 = 'the'
message_1 = 'policeman'
message_2 = 'son'
message_3 = 'boy'
print(message_1[0] + message_3[2] + message_0[0:2] + message_2[1] + message_2[2])

1.1.2 提取

>word = 'supermarket'
>word[:]
'supermarket'
>word[5:]
'market'
>print(word[2:5] + '_' + word[5:9])
per_mark
>print(word[4] + word[7])
rr

你做对了吗?

  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值