swapcase: 大小写对调
capitalize:转换成首字母大写的单词格式
title: 转换成每个单词首字母大写的标题模式
3.4 字符串排版
center(width [,fillchar]): 居中显示,参数width表示整体宽度,fillchar表示填充字符,默认填充字符为空
zfill(width):居右显示,参数width表示整体宽度,使用0进行填充
ljust(width [, fillchar]):左对齐,width表示整体宽度,fillchar表示填充字符
rjust(width [, fillchar]):右对齐,width表示整体宽度,fillchar表示填充字符
3.5 字符串修改
what?你前面说字符串是不可变的吧,为什么这里又说字符串的修改?你在逗我吗。呵呵哒。
S.replace(old, new[, count]) -> str --> 对字符串S进行查找,将指定的old字符串转换为new字符串,count表示替换的次数,默认表示重复替换所有
S.strip([chars]) -> str --> 将字符串s进行处理,从字符串的两边删除掉匹配chars的字符串,chars可以是多个单字符,默认是所有空白字符(\n,\r\n,\r,\t等等都包含)
注意:replace的替换是生成一个新的字符串,而不是修改原字符串,这也是字符串修改的原理
3.6 字符串查找
我们有很多的时候要判断关键字是否存在一个字符串中,那么我们就需要在字符串中遍历查找,是否有匹配的字符串。python提供了find,rfind,index,count等函数用于完成需求
index和count方法由于是遍历查找,所以时间复杂度都是O(n),会随着字符串序列的数据规模的增大,而效率下降,如果没要在字符串中进行查找,还是建议使用find函数。
3.7 字符串判断
Python的字符串对象提供了两个函数,用于对字符串的起始位和结尾位来进行匹配,它们是startswith和endswith。
除了判断开始和结尾,Python的字符串还提供了部分函数,用来判断字符串内的元素类型,比如判断字符串是否是纯数字组成?是否是纯字母组成等,这些函数的返回值统一都为bool型,可以作为if语句的条件表达式。
3.8 字符串格式化
字符串格式化是我们需要重点掌握的东西,在早期的Python中使用的是C语言风格的字符串替换,使用起来比较难看,不符合python的风格(当然是我的猜测,哈哈)。后来Python推荐使用内置的format函数来对字符串进行格式化。
字符串格式化是一种拼接字符串输出样式的手段,更灵活方便,之前我们使用join和+来对字符串进行拼接。
join:只能使用分隔符,且要求被拼接的是可迭代对象且元素必须是来字符串类型
+: 使用起来比较方便,但是非字符串需要先转换为字符串才可以进行拼接。
3.8.1 C语言格式化
在Python 2.5版本以前,只能使用printf style风格的print输出,这种风格来自于C语言的printf函数,它有如下格式要求。(不建议使用,了解即可,Pythoner还是理解format就好。)
占位符:使用%和格式字符串组成,例如%s,%d等。使用s时,内部其实会调用str()函数进行转换
占位符中还可以插入修饰字符,例如%03d表示打印3个位置,不够的话,前面补0
format % value 格式字符串和被格式字符串之间使用%分割
values只能是一个对象,或是一个与格式字符串占位符数量相等的元组,或一个字典
3.8.2 format格式化
Python中推崇使用format函数来对字符串进行格式化。
‘{}{XXX}’.format(*args, **kwargs) -> str --> 函数的一般格式,{}表示占位符,使用format中的参数进行传递
format非常灵活,下面是基本使用方法说明:
args是可变的位置参数,是一个元组
kwargs是可变关键字参会苏,是一个字典
花括号表示占位符
{}表示按照顺序匹配位置参数,{n}表示取位置参数中索引为n的值
{xxx} 表示在关键字参数中搜索名称一致的值,kwargs必须放在位置参数的后面
{{}}表示打印花括号
3.8.3 对齐
当然字符串还提供了多种的对齐方式,便于我们对输出内容做一个简单的优化。
<:左对齐(默认)
:右对齐
^: 居中显示
对齐方式需要在占位符内使用:号进行分割
当填充符为数字的时候,可以与宽度写在一起,比如 {:0<5} --> {:<05} , {:0^5} --> {:^05}
3.8.9 小数点与进制
虽然用的不多,还是这里还是举例说明一下进制和小数的使用方法
d: 表示十进制
x: 表示十六进制
o: 表示八进制
b: 表示二进制
F: 表示浮点型
#: 表示添加进制前缀
*[1,2,3]: 表示把列表中的元素结构出来:*[1,2,3] --> 1,2,3
4 切片
说到切片那么不得不提线性结构,为什么?因为线性结构都可以进行切片操作,除了切片,线性结构其他的特点还有
可迭代(for val i …)
len()可以获取长度
可以通过下标进行访问(有序)
列表、元组、字符串、bytes、bytearray都属于线性结构,所以都可以被切片。
那什么是切片?我们说通过索引区间访问线性结构一段数据的方法就叫做切片,需要注意的是切片操作会引起内存复制,当对一个过于庞大的线性结构进行切片的时候,请慎重考虑内存使用率的问题。切片的表达方式和基本特点有:
格式:sequence[start:stop:[,step=1]] 返回[start, stop, step=1)的前闭后开子序列。
支持负索引。注意方向问题
当start为0或stop为0时,可以省略。[:]表示复制原线性结构数据(注意当对象为list时,属于浅copy)
超过上届(右),则取到末尾;超过下届(左),则取到开头。
start一定要在stop的左边
注意:
切片并不会对原数据进行修改,会返回新的数据
如果不是用变量接受,那么就会被标记为待回收
由于是新生成的数据,所以内存地址和原数据内存地址一定不相同。
4.1 切片赋值
既然可以进行切片,那么就会引申出来,是否可以进行切片赋值,什么是切片赋值?它该如何表示?下面以列表例进行说明。
切片操作写在等号的左边
被插入的可迭代对象在等号右边
仔细看上面示例代码会发现几个问题:
lst[1:3] = 1 表示切片赋值
切片赋值,赋的值必须是一个可迭代对象
切片赋值改变了原数据
字符串、元组这类不可变的元素,无法使用切片赋值(理由请看3)
当我们使用切片时,它会产生新的内存地址来存放生成的新列表,但是如果把切片操作放在赋值操作的左边时,那么就相当于引用了原列表的[start:stop]的索引,这种操作是不会生成新的内存空间的,换句话来讲就是直接对原列表进行了insert操作.
最后
不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~
给大家准备的学习资料包括但不限于:
Python 环境、pycharm编辑器/永久激活/翻译插件
python 零基础视频教程
Python 界面开发实战教程
Python 爬虫实战教程
Python 数据分析实战教程
python 游戏开发实战教程
Python 电子书100本
Python 学习路线规划
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZlaTM0Nzc5NTc5MA==,size_16,color_FFFFFF,t_70)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!