Python入门-字符串及切片总结

什么是字符串?

在python中,肉眼可以识别,具有特殊含义的字符组成的串,我们称之为字符串。字符串是 Python 中最常用的数据类型。我们可以使用引号('或")来创建字符串。创建字符串很简单,只要为变量分配一个值即可。

python如何表示字符串(定义字符串)

|-- 由弱数据类型语言的特性决定的:
|-- 单引号
|-- 双引号
|-- 三引号
|-- str
s = str(“字符串”)

字符串的常见方法:

|-- capitalize() # 让字符串首字母大写(规范化每段的第一句话)
|-- center(width,[fillchar]) # 设置字符串安装长度居中,fillchar默认是空格,可以自定义
|-- ljust # 左对齐,fillchar默认是空格,可以自定义
|-- rjust # 右对齐,fillchar默认是空格,可以自定义
|-- count() # 统计字符或者字符串出现的次数
|-- endswith() # 判断字符串是否以xxx结尾
|-- startswith() # 判断字符串是否以xxx开头

|-- index # 查找字符或者字符串在字符串中第一次出现的位置,
如果字符或者字符串不存在,则抛出异常
|-- rindex # 查找字符或者字符串在字符串中最后一次出现的位置
|-- find # 查找字符或者字符串在字符串中第一次出现的位置,
如果字符或者字符串不存在,则返回-1
|-- rfind # 查找字符或者字符串在字符串中最后一次出现的位置

|-- encode(charset) # encode python3提供python用来将字符串转换为字节的一个方法
如果字节想转换为字符串呢?
|-- decode(charset) # 将字节转换为字符串

|-- format # 用来格式化字符串的
|-- islower # 判断是否都是小写字母
|-- isupper # 判断是否都是大写字母
|-- istitle # 判断字符串是否是标题
|-- isspace
|-- isdigit # 判断是不是数字
|-- isalnum # 判断是否都由有效符号
|-- isalpha # 判断是否都由字母组成

|-- title # 将字符串转换为标题格式
|-- lower # 将字符串转换为小写字母
|-- upper # 将字符串转换为大写字母

|-- join(iterable) # 按照特定的符号,将一个可迭代对象拼接成字符串
|-- split(“符号”) # 按照特定的符号,将字符串切割,返回一个列表
|-- strip # 清除字符串两侧的空格
|-- lstrip # 清除左侧空格
|-- rstrip # 清除右侧空格
|-- replace(“原字符串”, “新值”) # 替换对应的字符串

什么是切片?

利用python解决问题的过程中,经常会遇到从某个对象中抽取部分值的情况。“切片”操作正是专门用于实现这一目标的有力武器。

python提供大家用来切割可迭代对象(容器)
ps:在Python中,迭代器是遵循迭代协议的对象。使用iter()从任何序列对象中得到迭代器(如list, tuple, dictionary, set等)。另一种形式的输入迭代器是generator(生成器)。
很多容器诸如列表、字符串可以用for循环遍历对象。for 语句会调用容器对象中的 iter()函数, 该函数返回一个定义了 next() 方法的迭代器对象,该方法将逐一访问容器中的元素。

所以说:python中,任意对象,只要定义了__next__方法,它就是一个迭代器。因此,python中的容器如列表、元组、字典、集合、字符串都可以被称作迭代器。
迭代就是从迭代器中取元素的过程。
比如我们用for循环从列表[1,2,3]中取元素,这种遍历过程就被称作迭代。

切片常见方法:

|-- iterable[start:] # 从start位置开始切割,切到末尾
|-- iterable[start:end] # 从start位置开始切割,切到end位置为止,注意end并不包含 [)区间
|-- iterable[start🔚step] # 从start位置截取,到end位置结束,step为步长,步长默认是1
注意:使用切片进行数据分割是时候,第三个参数是步长
|-- 如果步长为正,则从左到右切
|-- 如果步长为负,则从右向左切,但是下标还是从左而右数的
注意:同时python也提供负索引(从右向左数,注意:最后一个元素是-1,倒数第二个是-2,以此类推)

总结:

(一)start_index、end_index、step三者可同为正、同为负,或正负混合。但必须遵循一个原则,即:当start_index表示的实际位置在end_index的左边时,从左往右取值,此时step必须是正数(同样表示从左往右);当start_index表示的实际位置在end_index的右边时,表示从右往左取值,此时step必须是负数(同样表示从右往左),即两者的取值顺序必须相同。

(二)当start_index或end_index省略时,取值的起始索引和终止索引由step的正负来决定,这种情况不会有取值方向矛盾(即不会返回空列表[]),但正和负取到的结果顺序是相反的,因为一个向左一个向右。

(三)step的正负是必须要考虑的,尤其是当step省略时。比如a[-1:],很容易就误认为是从“终点”开始一直取到“起点”,即a[-1:]= [9, 8, 7, 6, 5, 4, 3, 2, 1, 0],但实际上a[-1:]=[9](注意不是9),原因在于step省略时step=1表示从左往右取值,而起始索引start_index=-1本身就是对象的最右边元素了,再往右已经没数据了,因此结果只含有9一个元素。

(四)需要注意:“取单个元素(不带“:”)”时,返回的是对象的某个元素,其类型由元素本身的类型决定,而与母对象无关,如上面的a[0]=0、a[-4]=6,元素0和6都是“数值型”,而母对象a却是“list”型;“取连续切片(带“:”)”时,返回结果的类型与母对象相同,哪怕切取的连续切片只包含一个元素,如上面的a[-1:]=[9],返回的是一个只包含元素“9”的list,而非数值型“9”。

发布了9 篇原创文章 · 获赞 0 · 访问量 104
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 1024 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览