python教学03
同一运算符
用于比较两个对象的存储单元,实际比较的是对象的地址
运算符 | 描述 |
---|---|
is | is是判断两个标识符是不是引用同一个对象 |
is not | is not是判断两个标识符是不是引用不同的对象 |
is与==的区别:
- is用于判断两个变量引用对象是否为同一个,既比较对象的地址
- ==用于判断引用变量引用对象的值是否相等,默认调用对象的
_eq_()
方法
整数缓存问题
- 命令行模式下,Python仅仅对比较小的整数对象进行缓存,(范围为[-5,256]),而并非是所有的整数对象
- 文件模式下,所有的数字都会被缓存起来,范围是[-无穷,+无穷]
- 缓存实现[-5,256]仍然是底层用数组实现;不在[-5,256]出现的数,缓存到链表中,不连续分配空间
总结:
1.is是比较两个对象的id值是否相等,是否指向同一个内存地址
2.==比较的是两个对象的内容是否相等,值是否相等
3.is运算符比==效率高,
成员运算符
成员运算符测试实例中包含了一系列的成员,包括字符串,列表或元组
运算符 | 描述 |
---|---|
in | 如果在指定的序列中找到值返回True,否则返回False |
not in | 不在,则返回true |
1 | str2 = "string" |
运算符优先级问题
运算符 | 描述 |
---|---|
** | 指数(最高优先级) |
~、+、- | 按位翻转,一元加号和减号(最后两个的方法名为+@和-@) |
*、/、%、// | 乘、除、取模和取整除 |
+、- | 加法、减法 |
>>、<< | 右移、左移运算符 |
& | 位与 |
^、| | 位运算符 |
<=、<、>、>= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in in not | 成员运算符 |
not or and | 逻辑运算符 |
实际使用中,记住如下简单的规则即可,复杂的表示式一定要使用小括号组织
当一个表达式中出现多个操作符时,求值的顺序依赖于优先级规则。Python遵守数学操作符的传统规则
字符串基本特点
- 字符串的本质是:字符序列
- Python不支持单字符类型,单字符也是作为一个字符串使用的
Python的字符串是不可变的,我们无法对原字符串做任何的修改。但,可以将字符串的一部分复制到新创建的字符串。达到“看起来修改的效果”
字符串的编码
Python3直接支持Unicode,可以表示世界上的任何书面语言的字符。Python3的字符默认就是16为的Unicode,ASCII是Unicode编码的子集
使用内置函数ord()可以把字符转换成对应的Unicode码
使用内置函数chr()可以把十进制数字转换为对应的字符
引号创建字符串
我们可以通过单引号或双引号创建字符串。
使用两种引号的好处就是可以创建本身就包含引号的字符串,而不使用转义字符。
1 | a = '"李"优秀' |
空字符串和len()函数
python允许空字符串的存在,不包含任何字符串且长度为0
len()用于计算字符串包含多少字符
1 | c='' |
转义字符
转义字符是很多程序语言、数据格式和通信协议的形式文法的一部分。
ASCII编码为每个字符都分配了唯一的编号,称为编码值。在 Python中,一个ASCII字符除了可以用它的实体(也就是真正的字符)表示,还可以用它的编码值表示。这种使用编码值来间接地表示字符的方式称为转义字符(Escape Character)。
转义字符 | 字 符 值 | 输 出 结 果 |
---|---|---|
' | 一个单撇号(’) | 输出单撇号字符’ |
" | 一个双撇号(”) | 输出双撇号字符” |
? | 一个问号(?) | 输出问号字符? |
\ | 一个反斜杠(\) | 输出反斜杠字符\ |
\a | 警告(alert) | 产生声音或视觉信号 |
\b | 退格(backspace) | 将光标当前位置后退一个字符 |
\f | 换页(from feed) | 将光标当前位置移到下一页的开头 |
\n | 换行 | 将光标当前位置移到下一行的开头 |
\r | 回车(carriagereturn) | 将光标当前位置移到本行的开头 |
\t | 水平制表符 | 将光标当前位置移到下一个Tab位置 |
\v | 垂直制表符 | 将光标当前位置移到下一个垂直表对齐点 |
\o、\oo、\ooo其中o表示一个八进制数字 | 与该八进制码对应的ASCII字符 | 与该八进制码对应的字符 |
\xh[h…]其中h代表一个十六进制数字 | 与该十六进制码对应的ASCII字符 | 与该十六进制码对应的字符 |
从控制台读取字符串
我们可以使用input()从控制台读取键盘输入的内容
1 | myname = input("请输入名字:") |
字符串的操作
replace()实现字符串的替换
字符串从始至终不会变的,要么换新的要么删除
1 | a = "asdfasdfasdfasdfasdfs" |
输出结果
asdfasdfasdfasdfasdfs
lsdflsdflsdflsdflsdfs
整个过程中,实际上我们是创建了新的字符串对象,并指向了变量a,而不是修改了以前的字符串
str()实现数字转型字符串
1 | a = 2.5 |
但我们调用了print()函数时,解释器自动调用了str()将非字符串的对象转换了字符串
使用[]提取字符串
字符串的本质就是字符序列,我们可以通过在字符串后面添加[],在[]里面指定偏移量,可以提取该位置的单个字符
- 正向搜索:从左侧开始
- 反向搜索:从右侧开始
字符串切片slice操作
切片操作可以让我们快速提取子字符串,标准格式为,[起始偏移量:终止偏移量:步长]
典型操作
操作说明 | 示例 | 结果 |
---|---|---|
[:]提取整个字符串 | “abcde”[:] | abcde |
[start:]从start索引开始到结尾 | “abcde”[2:] | cde |
[:end]从头直到end-1 | “abcde”[:2] | ab |
[start:end]从start到end-1 | “abcde”[1:3] | bc |
[start:end:step] | “abcde”[0:3:1] | a |
[::-1]直接逆序输出
split()分割和join()合并
split()可以基于指定分割符,将字符串分割成多个子字符串(存储到列表中)。如果不指定分割符,则默认使用空白字符(换行符,空格,制表)
join()的作用和split()作用相反,用于将一系列子字符连接起来。
使用字符串拼接符+,会生成新的字符串对象,因此不推荐使用+来拼接字符串,推荐使用join函数,这样会仅新建一次对象
字符串驻留机制和字符串比较
字符串驻留:常量字符串只保留一次
字符串比较和统一性
==
,!=
可以对字符串进行比较
is
,not is
用来判断是否为同一对象
成员操作符判断子字符串
in
not in
,判断某个字符或者字符串是否存在于字符串中
常用方法汇总
Python之字符串操作大全(29种方法)_字符串的基本操作python-CSDN博客
可变字符串
- python中,字符串属于不可变对象,不支持原地修改,如果要修改其中的值,智能创建新的字符串对象
- 确实要原地修改字符串可以使用io.StringIO对象或者array模块
1 | import io |
- 标题: python教学03
- 作者: ligood
- 创建于 : 2024-06-23 09:39:29
- 更新于 : 2024-06-23 09:40:07
- 链接: https://blog.ligood.top/2024/06/23/python教学03/
- 版权声明: 版权所有 © ligood,禁止转载。