python教学03

python教学03

ligood Lv3

同一运算符

用于比较两个对象的存储单元,实际比较的是对象的地址

运算符 描述
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
2
3
str2 = "string"
str1 = "in"
print(str1 in str2)

运算符优先级问题

运算符 描述
** 指数(最高优先级)
~、+、- 按位翻转,一元加号和减号(最后两个的方法名为+@和-@)
*、/、%、// 乘、除、取模和取整除
+、- 加法、减法
>>、<< 右移、左移运算符
& 位与
^、| 位运算符
<=、<、>、>= 比较运算符
<> == != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in in not 成员运算符
not or and 逻辑运算符

实际使用中,记住如下简单的规则即可,复杂的表示式一定要使用小括号组织

当一个表达式中出现多个操作符时,求值的顺序依赖于优先级规则。Python遵守数学操作符的传统规则

字符串基本特点

  • 字符串的本质是:字符序列
  • Python不支持单字符类型,单字符也是作为一个字符串使用的

Python的字符串是不可变的,我们无法对原字符串做任何的修改。但,可以将字符串的一部分复制到新创建的字符串。达到“看起来修改的效果”

字符串的编码

Python3直接支持Unicode,可以表示世界上的任何书面语言的字符。Python3的字符默认就是16为的Unicode,ASCII是Unicode编码的子集

使用内置函数ord()可以把字符转换成对应的Unicode码

使用内置函数chr()可以把十进制数字转换为对应的字符

引号创建字符串

我们可以通过单引号或双引号创建字符串。

使用两种引号的好处就是可以创建本身就包含引号的字符串,而不使用转义字符。

1
2
a = '"李"优秀'
print(a)

空字符串和len()函数

python允许空字符串的存在,不包含任何字符串且长度为0

len()用于计算字符串包含多少字符

1
2
c=''
print(len(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
2
myname = input("请输入名字:")
print("您的名字是:"+myname)

字符串的操作

replace()实现字符串的替换

字符串从始至终不会变的,要么换新的要么删除

1
2
3
4
 a = "asdfasdfasdfasdfasdfs"
print(a)
a = a.replace("a", "l")
print(a)

输出结果

asdfasdfasdfasdfasdfs
lsdflsdflsdflsdflsdfs

整个过程中,实际上我们是创建了新的字符串对象,并指向了变量a,而不是修改了以前的字符串

str()实现数字转型字符串

1
2
3
4
a = 2.5
print(type(a))
a = str(a)
print(type(a))

但我们调用了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
2
3
4
5
6
7
8
9
10
import io

s = "abcdefg"
sio = io.StringIO(s) # sio是可变字符串
print(sio)
print(sio.getvalue())
sio.seek(3) # 指针到索引3
sio.write("***")
print(sio)
print(sio.getvalue())
  • 标题: 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,禁止转载。