切片,灵活的字符串-Python基础连载(三)
开篇
之前已经提到过,在Python
中,一共有六大数据类型
本期就开始学习Python
的六个标准数据类型中的字符串。
什么是字符串
在Python
中,字符串是用一对引号(单引号/双引号均可)包裹起来的一串字符,比如之前你见到的'Hello World !'
便是一个字符串。
下面再给出几个字符串的栗子:
Python
提供了type()
函数用于查询某个变量的数据类型,在上图中,数据类型名字后面的英文就是该数据类型所对应的type()
函数返回值,()
内填写的是你要查看的变量名。
接着上面的栗子,现在我要查看一下这些变量所保存元素的数据类型(不能你说是字符串就是字符串吧,我要亲自动手验证一下,嘿嘿)
验证完毕,返回值是*str
*,是字符串无误!
注意,一个单个的字符也是字符串:
1 | 'u' ch= |
你可能会好奇,这里出现的函数
,返回值
和class
是什么鬼。不要着急,后面会讲到,现在你只要会用type()
来查看一个变量的数据类型就达到足够了
如何选取字符串中的某些元素(重点)
首先要说明的是,Python
的下标
(也称索引)是从0
开始的,这和大部分编程语言是一致的。
下面这张图清晰的展示了下标
与元素位置的关系:字符串'Python'
的长度是6
,下标的最大值是5
,正好差1
。
现在,将字符串'Python'
存入变量s
:
1 | s='Python' |
如果想要获取中的某一个字符,直接使用s[下标]
即可:
注意,如果你给的下标值超出了字符串的下标最大值,则会报错,就像下面这样:
知道了如何选取字符串中的某一特定下标处的元素之后,你可能又会想:我能不能一次选取好几个元素呢?
当然可以!
Python
的切片
便是用来做这件事情的。
切片
语法如下:
1 | s[start:end:step] |
解释一下:s
是一个存储了字符串的变量名,start
和end
分别代表了切片
的开始位置下标
和结束位置下标+1
,step
是步长
,如果不写step
,那就用默认值1
。
(【注】Python
规定,step
不能为0,这一点记住就好,无需深究。)
下面的栗子可以让你更好的理解上面所说:
1 | 'Great Python' s= |
这里,从下标为0
的位置元素开始,一直到下标为2
的位置结束,由于我们没有写step
,所以使用默认值1
,也就是一步一步地向前走(规范化地表述是:从start开始,以1为步长,向end方向扫描)。
最终将下标区间[0,2]
位置的所有元素选取出来。
一个比较好的记忆方式是:start和end组成的区间是左闭右开的。
如果我们更改了步长,又会怎样?看下面的栗子:
1 | "Great Python" s= |
这一次设置了步长为2
,选取的下标范围是0
到8
。
s[0:9:2]
所做的事情如下(结合上图来理解):
1 | 第一次选取下标为`0`处的元素`G`接下来走`2`步,到达下标`2` |
至此,选取结束,返回由G
、e
、t
、P
、t
组成的字符串'GetPt'
。
相信通过以上详细的讲解,你已经学会了使用字符串中简单的切片
语法。
还有一件更神奇的事情:下标可以为负数!
你可能会问:下标为负数的话不是没有对应元素了嘛?就像下面这样:
事实不是这样的!
负数索引,指的是从最后一个元素开始,往前数(也就是倒着数,比如-1代表倒数第一个)。所以下面这张图才是正确的:
继续之前的栗子(仔细看注释哦):
1 | 'Python' s= |
对于切片
操作同理,这里给出几个栗子:
1 | "Great Python" s= |
如果仔细观察,你会发现,上面所有的栗子中,start
都是小于end
的,那能不能出现start>end
呢?
答案是可以!但同时需要将步长step
设置为负,否则选取到的结果一定是空!
1 | 'Graet Python' s= |
更多字符串操作
定义一个字符串:
1 | s='Hello World' |
**1.**求字符串长度:使用len()
函数
1 | 'Hello World' s= |
**2.**选取全部元素
1 | #方法1 |
**3.**选取倒序的全部元素
1 | #`切片`特有的操作 |
附
本期内容到这里就结束了,关于字符串的用法还没有讲完,剩余内容将在下期介绍。
在结束之前,简单介绍一下print()
。
print()
用于正如其名,用于输出结果到屏幕上。
将'Hello World!'
输出到屏幕上,只需将这个字符串放进()
内,运行即可:
1 | print('Hello World!') |
()
内也可以放入变量:
1 | 'Hello World!' s= |