Python常见基础数据结构

Python常见基础数据结构

  • 字符串
    • 字符串的构造
    • 字符串是一种序列
      • 正向索引
      • 负向索引
      • 有限切片
      • 无限切片
      • 查询方法
      • 压缩方法
      • 替换方法
      • 格式化插入
      • 分割方法
  • 列表
    • 列表构造
    • 列表同样属于序列
      • 列表的元素增加
      • 列表其他方法
  • 元组
  • 字典
    • 字典的构造
    • 字典不属于序列
    • 字典可变

字符串

字符串的构造

• 单引号:字符串中含有双引号时;
• 双引号:字符串中含有单引号时;
• 三引号:字符串中既含有单引号又含有双引号时,或需要多
行显示时;

# 单引号构造字符串
string1 = '"commentTime":"2018-01-26 08:59:30","content":"包装良心!馅料新鲜!还会回购"'
# 双引号构造字符串
string2 = "ymd:'2017-01-01',bWendu:'5℃',yWendu:'-3℃',tianqi:'霾~晴',fengxiang:'南风'"
# 三引号构造字符串
string3 = ''''nickName':"美美",'content':"环境不错,服务态度超好,就是有点小贵"'''
string4 = '''据了解,持续降雪造成安徽部分地区农房倒损、种植养殖业大棚损毁,
其中合肥、马鞍山、铜陵3市倒塌农房8间、紧急转移安置8人。'''
print(string1)
print(string2)
print(string3)
print(string4)

输出:

“commentTime”:“2018-01-26 08:59:30”,“content”:“包装良心!馅料新鲜!还会回购”
ymd:‘2017-01-01’,bWendu:‘5℃’,yWendu:‘-3℃’,tianqi:‘霾~晴’,fengxiang:‘南风’
‘nickName’:“美美”,‘content’:“环境不错,服务态度超好,就是有点小贵”
据了解,持续降雪造成安徽部分地区农房倒损、种植养殖业大棚损毁,
其中合肥、马鞍山、铜陵3市倒塌农房8间、紧急转移安置8人。

字符串是一种序列

正向索引

1、正向单索引指的是只获取列表中的某一个元素,并且是从左到右的方向索取对应位置下的元素,可以使用[index]表示。
2、需要注意的是,索引值index是从0开始的,所以索引值与实际元素的位置正好差1。

price = '5元/瓶'
# 取出价格,并做整型转换
print(int(price[0]))
# 取出字符串中的“元”
print(price[1])
# 取出字符串中的“瓶”
print(price[3])
print(price[len(price) -1]) # len()取字符串的长度

输出:

5


负向索引

1、负向单索引是指在正向单索引的基础上添加一个负号“-”,所表达的含义是从右向左的方向,获取元素,可以用[-index]表示。
2、需要注意的是,负索引index是从-1开始的。

price = '5元/瓶'
# 取出字符串中的“瓶”
print(price[-1])
ID = '123456198908187890'
# 根据身份证号码识别性别
if int(ID[-2]) % 2 == 0: #%计算两个数商的余数print('女')
else:print('男')

输出:


有限切片

切片索引指的是按照固定的步长,连续取出多个元素,可以[start: end :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])

输出:

24.5
500g
19890818

无限切片

是指在切片过程中不限定起始元素的位置或终止元素的位置,甚至起始和终止元素的位置都不限定,可以用[::step]表示。第一个冒号是指从字符串的第一个元素开始获取;第二个冒号是指取到最后一个元素结束(包含最后一个元素值)。

price2 = '24.5元/500g'
# 取出价格,并转换为浮点型
print(float(price2[:4]))
# 取出字符串中的“500g”
print(price2[6:])
print(price2[-4:])

输出:

24.5
500g
500g

查询方法

str.index(sub[, start[, end]])
或str.find(sub[, start[, end]])
sub:指定查询的目标子串;
start:指定查询的起始位置;
end:指定查询的结束位置;

price2 = '24.5元/500g'
price3 = '89.9元/桶'
# 查询“元”所在的位置
print(price3.index('元'))
# 取出价格,并转换为浮点型
print(float(price2[:price3.index('元')])) # 取到元的位置停止

输出:

4
24.5

压缩方法

str.lstrip([chars]) 删除左侧
str.rstrip([chars]) 删除右侧
str.strip([chars]) 删除首尾两边
chars :指定待压缩的首尾字符;
#chars默认为空白

prodName = '乒乓球拍(红双喜) '
# 压缩右侧的空白字符
print(prodName.rstrip())
price3 = '单价:18.9 元/Kg'
# 取出价格并转换为浮点数
print(float(price3[3:price3.index('元')].strip()))
sentence = '&&&^_^很喜欢,给满分!(^-^)'
# 剔除评论中首尾的特殊字符
print(sentence.strip('&^_^(^-^)')) # 找到其中的目标,他就删除

输出:

乒乓球拍(红双喜)
18.9
很喜欢,给满分!

替换方法

若字符串中间有需要替换的(不是两边),就需要用替换方法
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],'****'))

输出:

别克英朗1.3T的排量家用足够了,1.3T对应的可是163马力!
136****7890

格式化插入

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/20230{0}/60008_20230{0}.js'.format(month))

输出:

尊敬的刘先生,您的话费余额为6.78元,请及时充值,以免影响通话!
ROC曲线下的AUC值为:0.84
http://tianqi.2345.com/t/wea_history/js/202301/60008_202301.js
http://tianqi.2345.com/t/wea_history/js/202302/60008_202302.js
http://tianqi.2345.com/t/wea_history/js/202303/60008_202303.js
http://tianqi.2345.com/t/wea_history/js/202304/60008_202304.js
http://tianqi.2345.com/t/wea_history/js/202305/60008_202305.js

分割方法

str.split(sep)
sep :指定待分割的分割符;

email = 'lsx1234567@163.com'
# 将邮箱分割为邮箱名称和域名
print(email.split('@'))
info = '博佳花园 | 2室2厅 | 94.44平米 | 南 北 | 精装'
# 取出二手房中的面积值,并转换为浮点型
size = info.split('|')[2]
print(float(size.strip()[:-2]))

输出:

[‘lsx1234567’, ‘163.com’]
94.44

列表

列表构造

• 列表是一种存储数据的容器,借助于一对方括号构造列表对象。
• 构成列表的元素没有任何限制,可以是任何类型的数据,也可以是任何结构的数据。

ll = [1,3.14,False,'HUAWEI','2019-05-03',[1,3,5,7]]
list1 = ['张三','男',33,'江苏','硕士','已婚',['身高178','体重72']]
list2 = ['江苏','安徽','浙江','上海','山东','山西','湖南','湖北']
list3 = [1,10,100,1000,10000]
print(ll)
print(list1)
print(list2)
print(list3)

输出:

[1, 3.14, False, ‘HUAWEI’, ‘2019-05-03’, [1, 3, 5, 7]]
[‘张三’, ‘男’, 33, ‘江苏’, ‘硕士’, ‘已婚’, [‘身高178’, ‘体重72’]]
[‘江苏’, ‘安徽’, ‘浙江’, ‘上海’, ‘山东’, ‘山西’, ‘湖南’, ‘湖北’]
[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:])

输出:

张三
江苏
[‘身高178’, ‘体重72’]
身高178
[‘浙江’, ‘上海’, ‘山东’, ‘山西’]
[‘山西’, ‘湖南’, ‘湖北’]

列表的元素增加

借助于列表的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)

输出:

[1, 10, 100, 1000, 10000, 2]
[1, 10, 100, 1000, 10000, 2, 20, 200, 2000, 20000]

列表其他方法

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,)
print(tt)
print(t1)
print(t2)
print(t3)

输出:

(1, 3.14, False, ‘HUAWEI’, ‘2019-05-03’, [1, 3, 5, 7], (10, 20, 100))
(‘张三’, ‘男’, 33, ‘江苏’, ‘硕士’, ‘已婚’, [‘身高178’, ‘体重72’])
(‘江苏’, ‘安徽’, ‘浙江’, ‘上海’, ‘山东’, ‘山西’, ‘湖南’, ‘湖北’)
(1,)

字典

字典的构造

• 构造字典对象需要使用大括号表示,即{};
• 字典元素都是以键值对的形式存在,并且键值对之间用英文状态下的冒号隔开,即key:value
• 键在字典中是唯一的,不能有重复。

dict1 = {'姓名':'张三','年龄':33,'性别':'男','子女':{'儿子':'张四','女儿':'张美'},'兴趣':['踢球','游泳','唱歌']}
dict2 = {'电影':['三傻大闹宝莱坞','大话西游之大圣娶亲','疯狂动物城'],'导演':['拉吉库马尔·希拉尼','刘镇伟','拜伦·霍华德 '],'评分':[9.1,9.2,9.2]}
print(dict1)
print(dict2)

输出:

{‘姓名’: ‘张三’, ‘年龄’: 33, ‘性别’: ‘男’, ‘子女’: {‘儿子’: ‘张四’, ‘女儿’: ‘张美’}, ‘兴趣’: [‘踢球’, ‘游泳’, ‘唱歌’]}
{‘电影’: [‘三傻大闹宝莱坞’, ‘大话西游之大圣娶亲’, ‘疯狂动物城’], ‘导演’: [‘拉吉库马尔·希拉尼’, ‘刘镇伟’, '拜伦·霍华德 '], ‘评分’: [9.1, 9.2, 9.2]}

字典不属于序列

由于字典不再是序列,就无法借助于列表或元组中的索引方法返回字典中的元素。如需返回字典的元素,可以使用键索引或者get方法。

dict1 = {'姓名':'张三','年龄':33,'性别':'男','子女':{'儿子':'张四','女儿':'张美'},
'兴趣':['踢球','游泳','唱歌']}
# 取出年龄
print(dict1['年龄'])
# 取出子女中的儿子姓名
print(dict1['子女']['儿子'])
# 取出兴趣中的游泳
print(dict1['兴趣'][1])

输出:

33
张四
游泳

字典可变

d[key] = value
d[key] = value
当key的值在字典当中,此操作为修改
当key的值不在字典当中,此操作为增加

dict1 = {'姓名':'张三','年龄':33,'性别':'男','子女':{'儿子':'张四','女儿':'张美'},
'兴趣':['踢球','游泳','唱歌']}
# 增加身高信息
dict1['身高'] = 178
print(dict1)
# 将年龄改为35
dict1['年龄'] = 35
print(dict1)

输出:

{‘姓名’: ‘张三’, ‘年龄’: 33, ‘性别’: ‘男’, ‘子女’: {‘儿子’: ‘张四’, ‘女儿’: ‘张美’}, ‘兴趣’: [‘踢球’, ‘游泳’, ‘唱歌’], ‘身高’: 178}
{‘姓名’: ‘张三’, ‘年龄’: 35, ‘性别’: ‘男’, ‘子女’: {‘儿子’: ‘张四’, ‘女儿’: ‘张美’}, ‘兴趣’: [‘踢球’, ‘游泳’, ‘唱歌’], ‘身高’: 178}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/178258.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python神器解密:掌握property特性巧管理属性

更多资料获取 📚 个人网站:ipengtao.com property 是Python中的一个内置装饰器,它用于创建属性并允许开发者定义特定的操作,例如获取(getter)、设置(setter)和删除(dele…

【强化学习】关于PPO、SAC算法中价值函数的一些胡思乱想

最近的一些关于强化学习中价值函数的一些想法,发在了知乎上,全文考过来调公式有点麻烦,就直接发链接算了。 https://zhuanlan.zhihu.com/p/600300791?utm_psn1712895542018043904 https://zhuanlan.zhihu.com/p/667868767?utm_psn17128948…

Vue中的过滤器了解吗?过滤器的应用场景有哪些?

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue-filter过滤器 目录 一、是什么 二、如何用 定义filter 小结: 三、应用场景 四…

苍穹外卖项目笔记(6)— Redis操作营业状态设置

1 在 Java 中操作 Redis 1.1 Redis 的 Java 客户端 Jedis(官方推荐,且命令语句同 redis 命令)Lettuce(底层基于 Netty 多线程框架实现,性能高效)Spring Data Redis(对 Jedis 和 Lettuce 进行了…

c++ 共享内存

共享内存 一、查看所有的共享内存 (py37) hqnuc:~/tmp/hq$ ipcs -m ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0x00000000 4 blueberry 600 524288 2 dest 0x000000…

力扣labuladong——一刷day54

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣1660. 纠正二叉树二、力扣100. 相同的树三、力扣572. 另一棵树的子树四、力扣101. 对称二叉树 前言 判断树是否相等,就直接遍历就可以。判断…

同为科技(TOWE)模块化定制化让每条PDU实现专属供电解决方案

作为追求最高功率和空间效率的动态数据中心的理想产品,模块化、定制化PDU是追求最高功率和空间效率的动态数据中心的理想产品。同为科技(TOWE)是我国PDU行业的开创者和领导者,曾率先于中国电源分配单元http://www.pdu.com.cn网站上…

机器学习实战第3天:手写数字识别

☁️主页 Nowl 🔥专栏《机器学习实战》 《机器学习》 📑君子坐而论道,少年起而行之 ​ 文章目录 一、任务描述 二、数据集描述 三、主要代码 (1)主要代码库的说明与导入方法 (2)数据预…

2023-11-28 C语言if语句多个||或 与的时时候,会顺序执行,不满足条件则退出,不会再比较后面的内容,实例测试

一、if(i > 0 || image(0) > 5)或者if(i > 0 && image(0) > 5)&#xff0c;C语言if语句多个||或 与&&的时时候&#xff0c;会顺序执行&#xff0c;不满足条件则退出&#xff0c;不会再比较后面的内容。 二、测试代码 #include <stdio.h> #i…

题目标题:汽水瓶 c语言

1.问题描述 有这样一道智力题&#xff1a;“某商店规定&#xff1a;三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶&#xff0c;她最多可以换多少瓶汽水喝&#xff1f;”答案是5瓶&#xff0c;方法如下&#xff1a;先用9个空瓶子换3瓶汽水&#xff0c;喝掉3瓶满的&#x…

成为网络安全高手!教你如何做出专业级别的渗透测试

01、信息收集 1、域名、IP、端口 域名信息查询&#xff1a;信息可用于后续渗透 IP信息查询&#xff1a;确认域名对应IP&#xff0c;确认IP是否真实&#xff0c;确认通信是否正常 端口信息查询&#xff1a;NMap扫描&#xff0c;确认开放端口 发现&#xff1a;一共开放两…

Linux CentOS_7解决无法上网的问题

参考视频&#xff1a;保姆式教学虚拟机联网liunx(centos)_哔哩哔哩_bilibili 第一步&#xff1a;选择网络模式 第二步&#xff1a;配置网卡命令&#xff1a;打开终端执行命令&#xff1a; 1、先切换到根目录下&#xff0c;防止在第执行cd /etc/sysconfig/network-scripts命的…

java多线程-扩展知识一:进程线程、并发并行、同步异步

1、进程 进程&#xff08;Process&#xff09;是计算机中的程序关于某数据集合上的一次运行活动&#xff0c;是系统进行资源分配的基本单位&#xff0c;是操作系统结构的基础。在早期面向进程设计的计算机结构中&#xff0c;进程是程序的基本执行实体&#xff1b;在当代面向线程…

云计算——ACA学习 阿里云云计算服务概述

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号&#xff1a;网络豆云计算学堂 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a; 网络豆的主页​​​​​ 目录 写在前面 前期回顾 本期介绍 前言了解 一…

QCheckBox通过qss实现状态切换显示不同图标

QString qss "QCheckBox::indicator:unchecked{ \image:url(:/resources/status_close.png); \} \QCheckBox::indicator:checked { \image: url(:/resources/status_open.png); \}";ui->checkBox->setStyleSheet(qss);ui->checkBox->setChecked(true);

【领域驱动设计 学习目标及大纲】从CRUD到架构设计

从2018年至今&#xff0c;已工作了5年有余&#xff0c;回望这5年的工作历程&#xff0c;虽然一直在学习、一直在积累&#xff0c;但其实都在术的层面上停留&#xff0c;也就是具体的技术点。这5年多的时间里其实也不是没有窥道的想法&#xff1a; 一次是2018年刚工作的时候&am…

FPGA模块——AD高速转换模块(并行输出转换的数据)

FPGA模块——AD高速转换模块&#xff08;并行输出转换的数据&#xff09; &#xff08;1&#xff09;AD9280/3PA9280芯片&#xff08;2&#xff09;代码 &#xff08;1&#xff09;AD9280/3PA9280芯片 AD9280/3PA9280芯片的引脚功能&#xff1a; 工作电压2.7到5.5v 数据对应&a…

采购申请的库存地点和MRP2的库存地点的关系

F类材料的采购申请的库存地点&#xff0c;带外部采购申请仓储地点 X类材料的采购申请的库存地点,从MRP2的生产仓储地点自动带到计划订单再到生产工单再到采购申请。

linux线程详解

线程 c版本1、线程概述2、创建线程3、线程退出4、线程回收使用子线程栈使用全局变量使用主线程栈 5、线程分离6、其他线程函数线程取消 6.2 线程ID比较 C版本1、构造函数2、公共成员函数2.1 get_id()2.2 join()2.3 detach()2.4 joinable()2.5 operator() 3、静态函数4、C线程命…