目录
对象
字符串
一、对象
(1)什么是对象
(2)不可变对象
什么是不可变对象?
举例说明:
a = 5print(id(a))a = 4print(id(a)) # 重新赋值之后,内存地址发生改变print(id(a))
a = 4
print(id(a)) # 重新赋值之后,内存地址发生改变
实际操作:
(3)小整数池
# 举个栗子a=-5b=-5a is b:Truea=1000b=1000a is b:False
a=-5
b=-5
a is b:True
a=1000
b=1000
a is b:False
实际操作:
(4)可变对象
什么是可变对象
举例说明
# 举个例子list1 = [1,2,3,4]print(list1)print(id(list1)) # 打印 id 地址list1[2] = 5 # 对列表进行改值操作print(list1) # 打印改值之后的列表内容print(id(list1)) # 打印改值之后的 id 地址
list1 = [1,2,3,4]
print(list1)
print(id(list1)) # 打印 id 地址
list1[2] = 5 # 对列表进行改值操作
print(list1) # 打印改值之后的列表内容
print(id(list1)) # 打印改值之后的 id 地址
实际操作
(5)编码
先说说什么是编码
ASCII码:
UNICODE万国码:
UTF-8码
(6)bytes与str
编码转换过程
(7)数据类型
(8)下标(索引)
# 如果想取出部分字符,那么可以通过下标的方法,(注意 python 中下标从 0 开始)name = 'abcdef'print(name[0])print(name[1])print(name[2])运行结果:abc0 开始)
name = 'abcdef'
print(name[0])
print(name[1])
print(name[2])
运行结果:
a
b
c
(9)切片
# 我们以字符串为例讲解。如果取出一部分,则可以在中括号[]中,使用:name = 'abcdef'print(name[0:3]) # 取 下标0~2 的字符结果为:abcs = 'Hello World!'print(s[4])print(s)print(s[:]) # 取出所有元素(没有起始位和结束位之分),默认步长为1print(s[1:]) # 从下标为1开始,取出 后面所有的元素(没有结束位)print(s[:5]) # 从起始位置开始,取到 下标为5的前一个元素(不包括结束位本身)print(s[:-1]) # 从起始位置开始,取到 倒数第一个元素(不包括结束位本身)print(s[-4:-1]) # 从倒数第4个元素开始,取到 倒数第1个元素(不包括结束位本身)print(s[1:5:2]) # 从下标为1开始,取到下标为5的前一个元素,步长为2(不包括结束位本身)# python 字符串快速逆置print(s[::-1]) # 从后向前,按步长为1进行取值# 索引是通过下标取某一个元素# 切片是通过下标取某一段元素
name = 'abcdef'
print(name[0:3]) # 取 下标0~2 的字符
结果为:
abc
s = 'Hello World!'
print(s[4])
print(s)
print(s[:]) # 取出所有元素(没有起始位和结束位之分),默认步长为1
print(s[1:]) # 从下标为1开始,取出 后面所有的元素(没有结束位)
print(s[:5]) # 从起始位置开始,取到 下标为5的前一个元素(不包括结束位本身)
print(s[:-1]) # 从起始位置开始,取到 倒数第一个元素(不包括结束位本身)
print(s[-4:-1]) # 从倒数第4个元素开始,取到 倒数第1个元素(不包括结束位本身)
print(s[1:5:2]) # 从下标为1开始,取到下标为5的前一个元素,步长为2(不包括结束位本身)
# python 字符串快速逆置
print(s[::-1]) # 从后向前,按步长为1进行取值
# 索引是通过下标取某一个元素
# 切片是通过下标取某一段元素
(10)复制(拷贝)
赋值:
实际操作:
图片详解:
实际操作:
l = [1, 2, 3, 4, [1, 2, 3] ] # 列表中有整数数据类型,也有列表数据类型new_l = l 对 对象 l 的引用copy_l = copy.copy(l) 对 对象 l 的浅拷贝deepcopy_l = copy.deepcopy(l) 对 对象 l 的深拷贝1, 2, 3, 4, [1, 2, 3] ] # 列表中有整数数据类型,也有列表数据类型
new_l = l 对 对象 l 的引用
copy_l = copy.copy(l) 对 对象 l 的浅拷贝
deepcopy_l = copy.deepcopy(l) 对 对象 l 的深拷贝
l = [1, 2, 3, 4, [1, 2, 3] ] id(l) ---> 1631063137352 new_l = l id(new_l) ---> 1631063137352copy_l = copy.copy(l) id(copy_l) ---> 1631063137416deepcopy_l = copy.deepcopy(l) id(deepcopy_l) ---> E16310630266321, 2, 3, 4, [1, 2, 3] ] id(l) ---> 1631063137352
new_l = l id(new_l) ---> 1631063137352
copy_l = copy.copy(l) id(copy_l) ---> 1631063137416
deepcopy_l = copy.deepcopy(l) id(deepcopy_l) ---> E1631063026632
l = [1, 2, 3, 4, [1, 2, 3] ] id(l[1]) ---> 1400022144 new_l = l id(new_l[1]) ---> 1400022144copy_l = copy.copy(l) id(copy_l[1]) ---> 1400022144deepcopy_l = copy.deepcopy(l) id(deepcopy_l[1]) ---> 14000221441, 2, 3, 4, [1, 2, 3] ] id(l[1]) ---> 1400022144
new_l = l id(new_l[1]) ---> 1400022144
copy_l = copy.copy(l) id(copy_l[1]) ---> 1400022144
deepcopy_l = copy.deepcopy(l) id(deepcopy_l[1]) ---> 1400022144
l = [1, 2, 3, 4, [1, 2, 3] ] id(l[-1]) ---> 1631063137544 new_l = l id(new_l[-1]) ---> 1631063137544copy_l = copy.copy(l) id(copy_l[-1]) ---> 1631063137544deepcopy_l = copy.deepcopy(l) id(deepcopy_l[-1]) --->16310631863121, 2, 3, 4, [1, 2, 3] ] id(l[-1]) ---> 1631063137544
new_l = l id(new_l[-1]) ---> 1631063137544
copy_l = copy.copy(l) id(copy_l[-1]) ---> 1631063137544
deepcopy_l = copy.deepcopy(l) id(deepcopy_l[-1]) --->1631063186312
浅拷贝 copy:
深拷贝 deepcopy:
(10)列表推导式
实际操作:
二、字符串
(1)字符串的格式
num = 2222
name = 'hello july''hello july'
总结:
(2)字符串输出
name = '英雄联盟'kind = '游戏'address = '王者峡谷'print('**************************************************')print("姓名:%s" % name)print("种类:%s" % kind)print("公司地址:%s" % address)print('**************************************************')
kind = '游戏'
address = '王者峡谷'
print('**************************************************')
print("姓名:%s" % name)
print("种类:%s" % kind)
print("公司地址:%s" % address)
print('**************************************************')
实际操作:
(3)字符串输入
userName = input('请输入用户名:') # 命名规范 userName 简单易懂代表用户名字print("用户名为:%s" % userName)password = input('请输入密码:')print("密码为:%s" % password)'请输入用户名:') # 命名规范 userName 简单易懂代表用户名字
print("用户名为:%s" % userName)
password = input('请输入密码:')
print("密码为:%s" % password)
实际操作:
(4)下标和切片
字符串中"下标"的使用
name = "JULYEDU.COM"name[0]name[6]"JULYEDU.COM"
name[0]
name[6]
实际操作:
(5)切片
切片的语法:
name = "JULYEDU.COM"print(name[0:7]) # 取 下标0~7 的字符
print(name[0:7]) # 取 下标0~7 的字符
运行结果:
name = "JULYEDU.COM"print(name[0:7]) # 取 下标 0~7 的字print(name[3:5]) # 取 下标 3~5 的字print(name[3:]) # 取 下标为 3 开始一直到最后的字print(name[1:-1]) # 取 下标为 1 开始到最后第 2 个之间的字符print(name[1::2]) # 取 下标为 1 开始一直到最后的字,每两个切一个
print(name[0:7]) # 取 下标 0~7 的字
print(name[3:5]) # 取 下标 3~5 的字
print(name[3:]) # 取 下标为 3 开始一直到最后的字
print(name[1:-1]) # 取 下标为 1 开始到最后第 2 个之间的字符
print(name[1::2]) # 取 下标为 1 开始一直到最后的字,每两个切一个
运行结果:
(6)字符串常见操作
find()
web.find('july') # 返回下标 4'july') # 返回下标 4
lower()
name = 'Wo Zui Shuai !'name.lower() # 结果返回:'wo zui shuai !''Wo Zui Shuai !'
name.lower() # 结果返回:'wo zui shuai !'
upper()
name = 'Wo Zui Shuai !'name.upper() # 返回结果:'WO ZUI SHUAI !''Wo Zui Shuai !'
name.upper() # 返回结果:'WO ZUI SHUAI !'
count()
web.count('w') # 返回结果 3 ,表示 w 在 web 值中出现 3 次'w') # 返回结果 3 ,表示 w 在 web 值中出现 3 次
index()
web.index('a') # 举一个匹配失败得例子'a') # 举一个匹配失败得例子
split()
web.split('.',2) # split(以什么为切割点 ,切割几次)'.',2) # split(以什么为切割点 ,切割几次)
运行结果:
replace()
web.replace('w','W',2).replace('w','W',2)
运行结果:
title()
web.title() # 返回 'Www.Julyedu.Com'