python 数据结构
字符串
- 字符串的选择方式:
-
单引号:字符串中含有双引号时;
-
双引号:字符串中含有单引号时;
-
三引号:字符串中既含有单引号又含有双引号时,或需要多行显示时;
在通常情况下选择三引号
-
优先使用print函数进行字符串的结果输出,可以使内容更人性HUA
看图对比
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sDzVkcmG-1633857436645)(C:\Users\Lenovo\Desktop\学习日记\图片库\RY3NA7WP`KI_YQDC3@RSVFL.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8BQQhkAt-1633857436648)(C:\Users\Lenovo\Desktop\学习日记\图片库\KC_%[W1UPAVFF]V}D7H{9I7.png)]
基本的数据类型转换函数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wcwaWRD6-1633857436650)(C:\Users\Lenovo\Desktop\学习日记\图片库\1.png)]
如果输入字符型浮点, 语法错误
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-auhjDRCG-1633857436652)(C:\Users\Lenovo\Desktop\学习日记\图片库\QQ截图20211008205357.png)]
正确格式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3KI6fXol-1633857436653)(C:\Users\Lenovo\Desktop\学习日记\图片库\QQ截图20211008205550.png)]
只要不是数值型的0则为真,‘" "才为空,” “不为空。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UEr0zQIS-1633857436654)(C:\Users\Lenovo\Desktop\学习日记\图片库\6.png)]
strptime函数的使用方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mwCNVdOo-1633857436655)(C:\Users\Lenovo\Desktop\学习日记\图片库\12.png)]
需要注意的是需要加入print函数来使结果输出更人性化
正向单索引
price = '5元/瓶'
# 取出价格,并做整型转换
print(int(price[0]))
# 取出字符串中的“元”
print(price[1])
# 取出字符串中的“瓶”
print(price[3])
print(price[len(price) -1])
负向单索引
price = '5元/瓶'
# 取出字符串中的“瓶”
print(price[-1])
ID = '123456198908187890'
# 根据身份证号码识别性别
if int(ID[-2]) % 2 == 0:
print('女')
else:
print('男')
有限切片
切片索引指的是按照固定的步长,连续取出多个元素,可以用[start🔚step]表示。其中,start
指定索引的起始位置;end指定索引的终止位置(注意,end位置的元素取不到!);step指步
长,默认为1,表示逐个取出子元素。
price2 = '24.5元/500g'
# 取出价格,并转换为浮点型
print(float(price2[0:4]))
# 取出字符串中的“500g”
print(price2[6:len(price2)])
ID = '123456198908187890'
# 取出出生日期
print(ID[6:14])
无限切片
无限切片是指在切片过程中不限定起始元素的位置或终止元素的位置,甚至起始和终止元素的位
置都不限定,可以用[::step]表示。第一个冒号是指从字符串的第一个元素开始获取;第二个冒号
是指取到最后一个元素结束(包含最后一个元素值)。
price2 = '24.5元/500g'
# 取出价格,并转换为浮点型
print(float(price2[:4]))
# 取出字符串中的“500g”
print(price2[6:])
print(price2[-4:])
字符串的方法
-
选择方法
str.index(sub[, start[, end]])
str.find(sub[, start[, end]])区别:index方法如果查询不到目标字符串输出值为flase
find方法如果查询不到输出值为-1
sub:指定查询的目标子串;
start:指定查询的起始位置;
end:指定查询的结束位置;price3 = '89.9元/桶' # 查询“元”所在的位置 print(price3.index('元')) # 取出价格,并转换为浮点型 print(float(price2[:price3.index('元')]))
-
剔除方法
str.lstrip([chars])剔除左侧指定字符串
str.rstrip([chars])剔除右侧指定字符串
str.strip([chars])剔除两侧指定字符串
chars :指定待压缩的首尾字符;prodName = '乒乓球拍(红双喜) ' # 压缩右侧的空白字符 print(prodName.rstrip()) price3 = '单价:18.9 元/Kg' # 取出价格并转换为浮点数 print(float(price3[3:price3.index('元')].strip())) sentence = '&&&^_^很喜欢,给满分!(^-^)' # 剔除评论中首尾的特殊字符 print(sentence.strip('&^_^(^-^)'))
-
替换方法
str.replace(old, new)
old:指定被替换的子串;
new:指定新的子串;-
按值替换:
sentence = '别克英朗1.3t的排量家用足够了,1.3T对应的可是163马力!' # 将小写的t替换为大写的T -- 按值替换 print(sentence.replace('t', 'T'))
-
按位置替换:
tel = '13612347890' # 隐藏手机号中间四位 print(tel.replace(tel[3:7],'****'))
-
-
格式化插入方法
str.format (values)
values:指定格式化的值;info = '尊敬的刘先生,您的话费余额为6.78元,请及时充值,以免影响通话!' # 转换为格式化风格 print('尊敬的{}{},您的话费余额为{}元,请及时充值,以免影响通话!'.format('刘','先生',6.78)) # 保留两位有效数字的格式化 print('ROC曲线下的AUC值为:{:.2f}'.format(0.8356444)) # 生成5个有规则的网页链接 for month in [1,2,3,4,5]: print('http://tianqi.2345.com/t/wea_history/js/20190{0}/60008_20190{0}.js'.format(month))
-
分割方法
str.split(sep)将字符串按照分割符分割加入一个列表
sep :指定待分割的分割符;email = 'lsx1234567@163.com' # 将邮箱分割为邮箱名称和域名 print(email.split('@')) info = '博佳花园 | 2室2厅 | 94.44平米 | 南 北 | 精装' # 取出二手房中的面积值,并转换为浮点型 size = info.split('|')[2] #表示取出列表中位置为2的元素 print(float(size.strip()[:-2]))#去除两边空格,按负向索引
列表
列表是一种存储数据的容器,借助于一对方括号构造列表对
象。
构成列表的元素没有任何限制,可以是任何类型的数据,也
可以是任何结构的数据。
ll = [1,3.14,False,'HUAWEI','2019-05-03',[1,3,5,7]]
list1 = ['张三','男',33,'江苏','硕士','已婚',['身高178','体重72']]
list2 = ['江苏','安徽','浙江','上海','山东','山西','湖南','湖北']
list3 = [1,10,100,1000,10000]
对于序列而言,前文介绍的字符串索引和切片的使用方法在
列表上同样适用
list1 = ['张三','男',33,'江苏','硕士','已婚',['身高178','体重72']]
# 取出第一个元素
print(list1[0])
# 取出第四个元素
print(list1[3])
# 取出最后一个元素
print(list1[-1])
# 取出“身高178”这个值
print(list1[-1][0])
list2 = ['江苏','安徽','浙江','上海','山东','山西','湖南','湖北']
# 取出“浙江”至“山西”四个元素
print(list2[2:6])
# 取出最后三个元素
print(list2[-3:])
借助于列表的append和extend方法可以实现列表元素的增
加,所不同的是append在列表尾部增加一个元素,而
extend可以增加多个元素。
list3 = [1,10,100,1000,10000]
# 在列表末尾添加数字2
list3.append(2)
print(list3)
# 在列表末尾添加20,200,2000,20000四个值
list3.extend([20,200,2000,20000])
print(list3
什么时候用append方法,用for循环的控制流时想到append
其他方法
• list. count
• list. index
• list. sort 排序方法使用时,列表内数据结构要一致
元组
• 元组与列表基本相同,都是属于存储数据的容器,使用一对
圆括号可以构造元组对象。
• 元组同样属于序列。
• 元组是不可变对象。
• 构造只包含一个元素的元组,需在元组后面加逗号
tt = (1,3.14,False,'HUAWEI','2019-05-03',[1,3,5,7],(10,20,100))
t1 = ('张三','男',33,'江苏','硕士','已婚',['身高178','体重72'])
t2 = ('江苏','安徽','浙江','上海','山东','山西','湖南','湖北‘)
t3 = (1,)
字典
构造字典对象需要使用大括号表示,即{};
• 字典元素都是以键值对的形式存在,并且键值对之间用英文
状态下的冒号隔开,即key:value
• 键在字典中是唯一的,不能有重复
dict1 = {'姓名':'张三','年龄':33,'性别':'男','子女':{'儿子':'张四','女儿':'张美'},
'兴趣':['踢球','游泳','唱歌']}
dict2 = {'电影':['三傻大闹宝莱坞','大话西游之大圣娶亲','疯狂动物城'],
'导演':['拉吉库马尔·希拉尼','刘镇伟','拜伦·霍华德 '],'评分':[9.1,9.2,9.2]}
由于字典不再是序列,就无法借助于列表或元组中的索引方
法返回字典中的元素。如需返回字典的元素,可以使用键索
引或者get方法。
dict1 = {'姓名':'张三','年龄':33,'性别':'男','子女':{'儿子':'张四','女儿':'张美'},
'兴趣':['踢球','游泳','唱歌']}
# 取出年龄
print(dict1['年龄'])
# 取出子女中的儿子姓名
print(dict1['子女']['儿子'])
# 取出兴趣中的游泳
print(dict1['兴趣'][1])
字典是可变对象
dict1 = {'姓名':'张三','年龄':33,'性别':'男','子女':{'儿子':'张四','女儿':'张美'},
'兴趣':['踢球','游泳','唱歌']}
# 增加身高信息
dict1['身高'] = 178
print(dict1)
# 将年龄改为35
dict1['年龄'] = 35
print(dict1