python学习笔记-04

高级数据类型

一组按照顺序排列的值称为序列,python中存在三种内置的序列类型:字符串、列表和元组。序列可以支持索引和切片的操作,第一个索引值为0表示从左向右找,第一个索引值为负数表示从右找。

1.字符串操作

1.1 切片
切片是指选取字符串中的某些数据,语法:字符串[开始下标:结束下标:步长],切片截取的内容不包括结束下标对应的数据,步长是指隔几个下标获取一个字符,步长默认是1。

 test='hello world'
print('完整字符串%s'%test)
print('%s是第三个到第五个之间的数据'%test[2:5])  #包括下标为2的不包括下标为5的,步长默认为1
print('第三个开始到最后%s'%test[3:])
print('第一个开始到第三个%s'%test[:3])
print('倒叙输出%s'%test[::-1])  #负号表示方向,1是步长,从右向左输出

在这里插入图片描述

1.2 常用函数
在这里插入图片描述

test=' python '
print(type(test))    #打印test的类型
k=1
for i in test:
    print('第%d个字符是%s'%(k,i))
    k+=1
    pass
print('原本的值%s'%test)
print('首字母大写函数测试%s'%test.capitalize())
print('本身没变%s'%test)
print('stripe函数去除空格后%s这样的'%test.strip())
print('只删除左边的空格%s后'%test.lstrip())
print('只删除右边的空格%s后'%test.rstrip())
print('%s的内存地址%d'%(test,id(test)))
print('是否以p开头%s'%test.startswith('p')) #返回布尔值
print('是否以空格开头%s'%test.startswith(' '))
print('是否以p结尾%s'%test.endswith('p'))
print('是否以空格结尾%s'%test.endswith(' '))
print('大写转换%s'%test.upper())
test1='PYTHON'
print('小写转换%s'%test1.lower())
t=test   #字符串复制,把test的内存地址给了t
print('%s的内存地址是%d'%(t,id(t)))  #之所以叫复制不叫赋值是因为地址都是一样的
print(test.find('P'))  #find函数查找目标在序列中的位置,没有返回-1,有返回下标,如果查找到两个返回第一个
print(test.find('p'))
print(test.index('p'))   #index函数也是查找目标在字符串中的索引值,找到返回下标
print(test.index('P'))   #没找到会报错

在这里插入图片描述

在这里插入图片描述

2.列表操作

列表是一种有序的集合,可以增删改查其中的元素,数据项可以是任何类型的数据,支持索引和切片操作。

在这里插入图片描述

增加函数:append、extend、insert
修改:只要通过索引直接重新赋值就可以
删除函数:pop、remove、del
#定义一个空列表
li=[]
print(type(li))
#len函数可以获取列表中的数据个数或字符串的长度
li1=[1,2.4,"你好",True]
print(len(li1))   #返回列表li1的长度
str='snshj'
print(len(str))
print(li1)  #输出列表
print(li1[0])  #输出第一个元素
print(li1[1:3]) #输出第二个元素到第三个元素
print(li1[::-1]) #倒叙输出
print(li1*3)  #复制延长三次
#列表的增加
li1.append(['fff','ddd'])
li1.append(99)    #什么都能加,也可以加一个列表
print(li1)
li1.insert(1,'在索引值为1的地方插入数据')
#批量增加数据
rs=list(range(10))   #生成十个数并转为列表类型
li1.extend(rs)    #扩展、批量添加
print(li1)
#或者也可以直接扩展一个列表
li1.extend([1,12,34])
print(li1)    #可以从这里看到重复了也会加入进去
#修改
li1[0]='change'
print(li1)
#删除
del li1[0]   #删除列表中第一个元素
print(li1)
#批量删除
del li1[1:7:2] #按步长和范围批量删除
print(li1)
li1.remove(12)  #删除指定元素
print(li1)
li1.pop(2)  #删除指定下标的项
print(li1)
#查找
print(li1.index(1))  #返回元素1的下标,可以看出他返回的是第一个符合的位置
print(li1.index(1,5,19)) #表示返回从索引为5的数据开始查1这个元素,查到索引为19的元素,如果没找到就报错,找到就返回下标
#反转列表
li1.reverse()
print(li1)
print(li1.reverse())

在这里插入图片描述

len函数可以输出列表的数据项个数和求得字符串的长度

3.元组操作

元组是一种不可变的序列,创建后不能做任何修改,不能进行增删改,元组中的数据项用逗号分割,可以是任何数据类型,支持切片操作,和列表操作很像,都可以通过下标访问。但是元组中的元素不可以修改,而列表中的元素可以修改;元组使用小括号,列表使用中括号。当元组中只有一个元素时,要加逗号,不然会当作整型处理。
元组只能进行查询,但是可以对元组中的列表修改。

#元组的创建
tua=()   #创建一个空元组
print(type(tua))
print(id(tua))
tua=(1)
print(type(tua))   #如果只有一个数值不加逗号就会解释成int型
print(id(tua))    #重新赋值之后内存地址也变了
tua=(1,)
print(type(tua))   #加上逗号就好了
tua=('ji')
print(type(tua))   #只有一项解释成了字符型
tua=(1,2.3,'heihei',[1,2,'list'])  #创建一个正经元组
print(tua)
#元组的查询
for item in tua:
    print(item,end=" ")
    pass
print('用下标取%s'%tua[2])
print('用切片:')
print(tua[2:4])
print(tua[::-1])  #倒叙输出
print(tua)
print('下标-1的值也就是最后一个:',end=' ')
print(tua[-1])
print('下标-2的值是%s也就是倒数第二个'%tua[-2])
print('下标-3的值是%d也就是倒数第三个'%tua[-3])
print('下标-4的值是%d也就是倒数第四个'%tua[-4])
print(tua[-2:-1:])
#可以对元组中的列表进行修改
tua[3][0]=5678
print(tua)
tub=tuple(range(10))
print(tub)
#统计元组中到底有几个某元素
tub=(1,3,345,1,5,1)
print(tub.count(1))
print(tub.count(3))

在这里插入图片描述

4.字典操作

字典可以存储任意对象,是无序集合不是序列,以键值对的方式呈现,{‘key’,‘value’}。当在字典中查找元素时通过键查找。与列表一样,字典可以增删改查。
字典的键只能是不可变类型,比如数字、元组、字符串。

字典的键key不能重复,值value可以重复
如果存在重复的键,后者会覆盖前者

在这里插入图片描述

#创建一个空字典
dictA={}
print(type(dictA))
#增
dictA['name']='clis'   #name表示key,clis表示value
dictA['na']='clo'
print(dictA)
#改
dictA['name']='cli'
print(dictA)
print('dictA字典长度为%d'%len(dictA))
print('通过键查找键为name的值%s'%dictA['name'])
dictA.update({'name':'dsfd'})   #用update函数修改,也可以用于增加键值对
print(dictA)
dictA.update({'insert':'haha'})
print(dictA)
#遍历字典
print(dictA.keys())  #获取所有键
print(dictA.values())  #获取所有值
print(dictA.items())  #获取所有的数据项、键值对
for item in dictA.items():
    print(item)
    pass
for key,value in dictA.items():
    print('%s==%s'%(key,value))
    pass
#删除操作
del dictA['name']
print(dictA)
dictA.pop('insert')
print(dictA)
#声明一个有值的字典
dictB={'key2':'value1','key1':'value2'}
print(type(dictB))
print(dictB)
#对字典进行排序,按照ASCII码进行排序
print(sorted(dictB.items(),key=lambda d:d[0]))   #0指按照键排序
print(sorted(dictB.items(),key=lambda d:d[1]))   #1指按照值排序
#这里要注意,排序只能排相同类型的,如果是不同类型的,排不了,会报错

在这里插入图片描述

update函数,当更新的键值不存在时,就可以当做增加使用;存在时就更新。

5.共同的方法

在这里插入图片描述

#字符串
strA='diyige'
strB='dierge'
print(strA+strB)   #合并
print(strA*3)      #复制
print('yi' in strA)    #看对象是否存在,返回布尔类型的值
print('er' in strA)

#列表
listA=list(range(10))
listB=list(range(11,20))
print(listA+listB)      #合并
print(listA*3)          #复制
print(12 in listA)      #看对象是否存在
print(2 in listA)

#元组
tua=(1,3,45,5)
tub=('asd',234)
print(tua+tub)    #合并
print(tub*3)      #复制
print(3 in tub)   #看是否存在
print(3 in tua)  

#字典
dictA={'name':'paul','age':18}
print('aa' in dictA)    #看某值是否为字典的键值
print('name' in dictA)
print('paul' in dictA)

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Renesas MCU之定时器计数功能应用

目录 概述 1 功能介绍 1.1 时钟相关配置 1.2 应用接口 2 FSP配置Project参数 2.1 软件版本信息 2.2 配置参数 2.3 项目生成 3 定时器功能代码实现 3.1 定时器初始化函数 3.2 定时器回调函数 4 功能测试 5 参考文档 概述 本文主要介绍Renesas MCU的定时器功能的基…

Python语法详解module1(变量、数据类型)

目录 一、变量1. 变量的概念2. 创建变量3. 变量的修改4. 变量的命名 二、数据类型1. Python中的数据类型2. 整型(int)3. 浮点型(float)4. 布尔型(bool)5. 字符串(str)6.复数&#xf…

​ChatTTS:Win11本地安装和一键运行包!

ChatTTS 是一个专为交互式语音准备的AI语音合成项目,特点是自然,逼真,可把控声音细节,能说能笑能停顿。 效果演示 具体内容,已经在另外的文章中介绍过。 本文主要是关注两个点。 如何在Windows上安装这个项目。分享一…

2024蓝桥杯初赛决赛pwn题全解

蓝桥杯初赛决赛pwn题解 初赛第一题第二题 决赛getting_startedbabyheap 初赛 第一题 有system函数,并且能在bss上读入字符 而且存在栈溢出,只要过掉check函数即可 check函数中,主要是对system常规获取权限的参数,进行了过滤&…

软件测试总结基础

软件测试总结基础 1. 何为软件测试 定义:使用技术手段验证软件是否满足需求 目的:减少bug,保证质量 2. 软件测试分类 阶段划分 单元测试,针对源代码进行测试集成测试,针对接口进行测试系统测试,针对功能…

声音的归宿:恢复手机录音的3个步骤与策略

“手机录音删除了怎么恢复,没有云备份。本人平时喜欢用手机录音机录一些唱的歌,上次录过之后就再也没有打开,今天一打开发现上个月的录音都没了!里面都是我的歌,还有期末重点,还有声乐课的录的音频&#xf…

免费工具扫描 Linux 中已知威胁

首发公众号网络研究观,关注获取更多。 卡巴斯基为 Linux 平台发布了一款名为 KVRT 的新病毒清除工具,允许用户免费扫描他们的系统并清除恶意软件和其他已知威胁。 尽管人们普遍误以为 Linux 系统本质上是安全的,不会受到威胁,但不…

jeecg dictText字典值

前端列表的字典值回显,配置了数据字典后,在本地测试可以回显中文的数据, 但在线上服务器不能正常回显出来; 原因是在前端拿到records的列表值时可以拿到dictText的字典,但是线上服务器没有dictText的值; …

对称二叉树[简单]

优质博文:IT-BLOG-CN 一、题目 给你一个二叉树的根节点root, 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root [1,2,2,null,3,null,3] 输出&#xf…

YOLOv5改进 | Conv篇 | 利用YOLOv10提出的SCDown魔改YOLOv5进行下采样(附代码 + 结构图 + 添加教程)

一、本文介绍 本文给大家带来的改进机制是利用YOLOv10提出的SCDown魔改YOLOv5进行下采样,其是更高效的下采样。具体而言,其首先利用点卷积调整通道维度,然后利用深度卷积进行空间下采样。这将计算成本减少到和参数数量减少到。同时&#xff…

5.透明效果

实时渲染中要实现透明效果,通常会在渲染模型时控制它的透明通道(Alpha channel)。 当一个物体被渲染到屏幕上时,每个片元除了颜色和深度值之外,它还有另一个属性—透明度。 当透明度为1时,表示该像素是完…

信息系统项目管理师0141:产品范围和项目范围(9项目范围管理—9.1管理基础—9.1.1产品范围和项目范围)

点击查看专栏目录 文章目录 第9章 项目范围管理9.1 管理基础9.1.1 产品范围和项目范围 第9章 项目范围管理 项目范围管理包括确保项目做且只做所需的全部工作,以成功完成项目。项目范围管理主要在于定义和控制哪些工作应该包括在项目内,哪些不应该包含在…

Golang | Leetcode Golang题解之第131题分割回文串

题目: 题解: func partition(s string) (ans [][]string) {n : len(s)f : make([][]int8, n)for i : range f {f[i] make([]int8, n)}// 0 表示尚未搜索,1 表示是回文串,-1 表示不是回文串var isPalindrome func(i, j int) int8…

数据结构与算法之Floyd弗洛伊德算法求最短路径

目录 前言 Floyd弗洛伊德算法 定义 步骤 一、初始化 二、添加中间点 三、迭代 四、得出结果 时间复杂度 代码实现 结束语 前言 今天是坚持写博客的第18天,希望可以继续坚持在写博客的路上走下去。我们今天来看看数据结构与算法当中的弗洛伊德算法。 Flo…

如何学习SQL?YouTube近百万粉丝技术频道的学习路径图。

大家好,我是王有志,一个分享硬核 Java 技术的金融摸鱼侠,欢迎大家加入 Java 人自己的交流群“共同富裕的 Java 人”。 ByteByteGo 频道在 5 月 30 日的通信邮件中提到了“How to Learn SQL”这一主题,并给出了一张详细的学习路径…

python——网络编程

流程图 面向连接的套接字 面向连接的通信提供序列化的、可靠的和不重复的数据交付,而没有记录边界。主要的协议是传输控制协议(TCP); TCP套接字,在python中,必须使用SOCK_STREAM作为套接字类型 tcp的特点 面向连接…

使用GitHub托管静态网页

前言​: 如果没有服务器,也没有域名,又想部署静态网页的同学,那就可以尝试使用GitHub托管自己的网页​。 正文: 首先要有自己的GitHub的账号,如果没有可以自己搜索官网进行注册登录,国内对Gi…

深入了解 C 语言 Bug

目录 一、引言二、Bug的定义三、Bug的由来四、Bug的影响五、应对 Bug 的方法六、结论 一、引言 1、在 C 语言的编程世界中,Bug 是一个我们无法回避的话题。 2、Bug,简单来说,就是程序中存在的错误或缺陷。它可以表现为程序运行结果的异常、崩…

容器运行nslookup提示bash: nslookup: command not found【笔记】

在容器中提示bash: nslookup: command not found,表示容器中没有安装nslookup命令。 可以通过以下命令安装nslookup: 对于基于Debian/Ubuntu的容器,使用以下命令: apt-get update apt-get install -y dnsutils对于基于CentOS/R…

机器学习、深度学习模型建模开发过程中常见的评估指标汇总学习记录

在机器学习、深度学习模型的开发过程中, 很重要的一个环节就是要对模型的性能进行评估分析,不同类型的任务不同的模型对应使用不同的评估指标体系,本文的主要目的是正好趁着最近有这块的需求,就想着找点时间把汇总学习的内容整理记…