Day05
字符串
1、如果字符串中需要出现单引号或双引号,可以使用转义符号\对字符串中的符号进行转义
原始字符串只需要在字符串前边加一个英文字母 r 即可。
2、字符串的切片与拼接
- 类似于元组具有不可修改性
- 从 0 开始 (和 Java 一样)
- 切片通常写成
start:end这种形式,包括「start索引」对应的元素,不包括「end索引」对应的元素。 - 索引值可正可负,正索引从 0 开始,从左往右;负索引从 -1 开始,从右往左。使用负数索引时,会从最后一个元素开始计数。最后一个元素的位置编号是 -1。
3. 字符串的常用内置方法
-
capitalize()将字符串的第一个字符转换为大写。
-
lower()转换字符串中所有大写字符为小写。 -
upper()转换字符串中的小写字母为大写。 -
swapcase()将字符串中大写转换为小写,小写转换为大写。
-
count(str, beg= 0,end=len(string))返回str在 string 里面出现的次数,如果beg或者end指定则返回指定范围内str出现的次数。
-
endswith(suffix, beg=0, end=len(string))检查字符串是否以指定子字符串suffix结束,如果是,返回 True,否则返回 False。如果beg和end指定值,则在指定范围内检查。 -
startswith(substr, beg=0,end=len(string))检查字符串是否以指定子字符串substr开头,如果是,返回 True,否则返回 False。如果beg和end指定值,则在指定范围内检查。注意:区分大小写 -
find(str, beg=0, end=len(string))检测str是否包含在字符串中,如果指定范围beg和end,则检查是否包含在指定范围内,如果包含,返回开始的索引值,否则返回 -1。 -
rfind(str, beg=0,end=len(string))类似于find()函数,不过是从右边开始查找。 -
isnumeric()如果字符串中只包含数字字符,则返回 True,否则返回 False。 -
ljust(width[, fillchar])返回一个原字符串左对齐,并使用fillchar(默认空格)填充至长度width的新字符串。 -
rjust(width[, fillchar])返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度width的新字符串。
-
lstrip([chars])截掉字符串左边的空格或指定字符。 -
rstrip([chars])删除字符串末尾的空格或指定字符。 -
strip([chars])在字符串上执行lstrip()和rstrip()。
-
partition(sub)找到子字符串sub,把字符串分为一个三元组(pre_sub,sub,fol_sub),如果字符串中不包含sub则返回('原字符串','','')。 -
rpartition(sub)类似于partition()方法,不过是从右边开始查找。
-
replace(old, new [, max])把 将字符串中的old替换成new,如果max指定,则替换不超过max次。
-
split(str="", num)不带参数默认是以空格为分隔符切片字符串,如果num参数有设置,则仅分隔num个子字符串,返回切片后的子字符串拼接的列表。 -
splitlines([keepends])按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数keepends为 False,不包含换行符,如果为 True,则保留换行符。
-
maketrans(intab, outtab)创建字符映射的转换表,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 -
translate(table, deletechars="")根据参数table给出的表,转换字符串的字符,要过滤掉的字符放到deletechars参数中。
4. 字符串格式化
- Python 字符串格式化符号
| 符 号 | 描述 |
|---|---|
| %c | 格式化字符及其ASCII码 |
| %s | 格式化字符串,用str()方法处理对象 |
| %r | 格式化字符串,用rper()方法处理对象 |
| %d | 格式化整数 |
| %o | 格式化无符号八进制数 |
| %x | 格式化无符号十六进制数 |
| %X | 格式化无符号十六进制数(大写) |
| %f | 格式化浮点数字,可指定小数点后的精度 |
| %e | 用科学计数法格式化浮点数 |
| %E | 作用同%e,用科学计数法格式化浮点数 |
| %g | 根据值的大小决定使用%f或%e |
| %G | 作用同%g,根据值的大小决定使用%f或%E |
这里的内容有点多,大家有个印象就好,用的时候,可以再查
- 格式化操作符辅助指令
| 符号 | 功能 |
|---|---|
m.n |
m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) |
- |
用作左对齐 |
+ |
在正数前面显示加号( + ) |
# |
在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X') |
0 |
显示的数字前面填充'0'而不是默认的空格 |
字典
1. 可变类型与不可变类型
- 序列是以连续的整数为索引,与此不同的是,字典以"关键字"为索引,关键字可以是任意不可变类型,通常用字符串或数值。
- 字典是 Python 唯一的一个 映射类型,字符串、元组、列表属于序列类型。
- 这里有点绕,主要意思是字典中key是不能变的,所以如果通过如下图片中所示,比如加法后id变了,证明这个i=1和i=3是不同的变量,也就是证明了i这个变量是不可变的。
那么如何快速判断一个数据类型 X 是不是可变类型的呢?两种方法:
- 麻烦方法:用
id(X)函数,对 X 进行某种操作,比较操作前后的id,如果不一样,则X不可变,如果一样,则X可变。 - 便捷方法:用
hash(X),只要不报错,证明X可被哈希,即不可变,反过来不可被哈希,即可变。
- 整数
i在加 1 之后的id和之前不一样,因此加完之后的这个i(虽然名字没变),但不是加之前的那个i了,因此整数是不可变类型。 - 列表
l在附加'Python'之后的id和之前一样,因此列表是可变类型。
- 数值、字符和元组 都能被哈希,因此它们是不可变类型。
- 列表、集合、字典不能被哈希,因此它是可变类型。
2. 字典的定义
字典 是无序的 键:值(key:value)对集合,键必须是互不相同的(在同一个字典之内)。
-
dict内部存放的顺序和key放入的顺序是没有关系的。 -
dict查找和插入的速度极快,不会随着key的增加而增加,但是需要占用大量的内存。
字典 定义语法为 {元素1, 元素2, ..., 元素n}
- 其中每一个元素是一个「键值对」-- 键:值 (
key:value) - 关键点是「大括号 {}」,「逗号 ,」和「冒号 :」
- 大括号 -- 把所有元素绑在一起
- 逗号 -- 将每个键值对分开
- 冒号 -- 将键和值分开
3. 创建和访问字典
-
dict()创建一个空的字典。 -
dict(mapping)new dictionary initialized from a mapping object's (key, value) pairs -
dict(**kwargs)-> new dictionary initialized with the name=value pairs in the keyword argument list. For example: dict(one=1, two=2)
4. 字典的内置方法
-
dict.fromkeys(seq[, value])用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值。
-
dict.keys()返回一个可迭代对象,可以使用list()来转换为列表,列表为字典中的所有键。 -
dict.values()返回一个迭代器,可以使用list()来转换为列表,列表为字典中的所有值。 -
dict.items()以列表返回可遍历的 (键, 值) 元组数组。 -
dict.get(key, default=None)返回指定键的值,如果值不在字典中返回默认值。 -
dict.setdefault(key, default=None)和get()方法 类似, 如果键不存在于字典中,将会添加键并将值设为默认值。 -
key in dictin操作符用于判断键是否存在于字典中,如果键在字典 dict 里返回true,否则返回false。而not in操作符刚好相反,如果键在字典 dict 里返回false,否则返回true。 -
dict.pop(key[,default])删除字典给定键key所对应的值,返回值为被删除的值。key值必须给出。若key不存在,则返回default值。 -
del dict[key]删除字典给定键key所对应的值。 -
dict.popitem()随机返回并删除字典中的一对键和值,如果字典已经为空,却调用了此方法,就报出KeyError异常。 -
dict.clear()用于删除字典内所有元素。 -
dict.copy()返回一个字典的浅复制。 -
dict.update(dict2)把字典参数dict2的key:value对 更新到字典dict里。