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+=1pass
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.mzph.cn/bicheng/22513.shtml

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

相关文章

Unity 编辑器扩展 一键替换指定物体下的所有材质球

先看效果 实现方案 1:创建几个用于测试的Cube 2:创建一个脚本 3:编写脚本内容 主要是这部分的逻辑 附上完整代码 using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine;public class Tool {[MenuItem(…

json文件操作和异常处理

目录 按行读取文件readline() 读取大文件: json文件: json文件介绍: json的语法: 读取json文件: json文件写入: 异常: 捕获异常: 捕获指定类型的异常: 捕获未知类型的异常(使用最多): 异常捕获的完整结构: 异常传递: ​编辑抛出异常: 按行…

A6500-LC LVDT 前置器,用于A6500-UM, 导轨安装

电源 22.5V to 32VDC <30mA <0.1%/V <60V( 使用SELV/PELV 供电电源) 约2.2Vrms,5kHz IP20 IEC 60529 -35C to 75C(-31F to 167F) -35C to 85C(-31F to 185F) 电流损耗 供电电压对 运行温度 存储温度 0.35mm(0.014 in ),10 to 55Hz 15g 根据 EN 60068-2-27 根据IEC 613…

linux必学基础命令大全

一切皆文件&#xff0c;每个文件都有具体的用途 命令快捷查看目录 常用命令 - 目录类1、ls 查看当前目录下的文件2、man查看命令详细信息3、pwd 查看当前目录 -4、cd 进入目录5、清屏命令6、mkdir创建目录7、du查看文件或者文件夹大小 常用命令 - 文件类1、vim/vi使用2、cat 查…

Maven实战: 从工程创建自定义archetype

在上一节中(创建自定义archetype)我们手动创建了一个项目模板&#xff0c;经过5步能创建出一个项目模板&#xff0c;如果我有一个现成的项目&#xff0c;想用这个项目作为模板来生成其他项目呢&#xff1f;Maven提供了基于项目生成archetype模板的能力&#xff0c;我们分3步来讲…

Windows下 CLion中,配置 OpenCV、LibTorch

首先按照win下C部署深度学习模型之clion配置pytorchopencv教程记录 步骤配置。 LibTorch 部分 在测试LibTorch时会出现类似 c10.dll not found 的问题&#xff08;Debug才有&#xff09;&#xff1a; 参考C部署Pytorch&#xff08;Libtorch&#xff09;出现问题、错误汇总和 …

行业分析---造车新势力之理想汽车

1 前言 在之前的博客中&#xff0c;笔者撰写了多篇行业类分析的文章&#xff08;科技新能源&#xff09;&#xff1a; 《行业分析---我眼中的Apple Inc.》 《行业分析---马斯克的Tesla》 《行业分析---造车新势力之蔚来汽车》 《行业分析---造车新势力之小鹏汽车》 此类文章的受…

vulntarget-b记录(Sliver学习)

网络环境 域控&#xff08;Win2016&#xff09; vulntarget\administrator&#xff1a;Admin123、&#xff08;首次登陆要改密码修改为Admin123&#xff09; vulntarget\win101&#xff1a;admin#123 边界Web主机突破 nmap扫描发现81端口 通过扫描&#xff0c;fuzz出来了后…

DJI FlyCart 30 天空 “吊车”概念板评测!

从消费级无人机&#xff0c;到专业级无人机&#xff0c;再到行业级无人机&#xff0c;大疆的探索脚步从未停下。现在&#xff0c;大疆已经正式进入民用运载无人机行列&#xff01;就在8月16日&#xff0c;大疆正式发布首款民用运载无人机 —— DJI FlyCart 30。 作为大疆第一代…

Flutter基础 -- Flutter基础特性

目录 1. 一切都是 widget 1.1 UI 组件&#xff01;&#xff01;&#xff01; 1.2 架构设计 1.3 sdk 源码目录 1.4 widget 分类&#xff01;&#xff01;&#xff01; 参考文献 2. devTools 调试工具 2.1 启动调试器 2.2 布局面板 参考文献 3. 布局约束规则 3.1 让子…

亲,你有多久没有清理过你电脑的 DNS 缓存了?

最近明月因为工作关系更换了几次使用的电脑,期间就发现明明另一台电脑访问某个网址是正常,换一台电脑后就会出现无法访问的现象,并且用的还是同一个宽带网络,实在是太诡异了!后来还是突然想起来 DNS 缓存这个问题,立马清除了那台电脑的 DNS 缓存后,打不开的网址顺利的呈…

FPGA PCIe PIO代码的学习

目录 背景 应用场景 代码架构分析 结论 背景 本项目是基于xinlinx官方的PCIe IP 7 series integrated block for PCI Express。根据官方的例程加上官方给的example&#xff0c;对代码进行分析。 应用场景 对一些速率要求不高的&#xff0c;比如IO操作&#xff0c;推荐使用…

对新手友好的最简单方便的本地项目关联git远程仓库教程

对新手友好的最简单方便的本地项目关联git远程仓库教程 前置条件1.本地项目2.gitee上创建同名项目 关联操作1.在本地进行clone远程仓库操作2.把本地项目下的目录和文件都复制到这个克隆自git的项目文件夹里面3.查看文件状态和提交文件 在我们创建项目时&#xff0c;一般都是在本…

QAnything-1.4.01.4.1版本更新!使用指北!

久等了各位&#xff01;时隔一个多月&#xff0c;我们在4月26日和5月20日接连发布了v1.4.0和v1.4.1两个版本&#xff0c;带来了问答性能&#xff0c;解析效果等多方面的改进&#xff0c;并新增了大量的新功能和新特性 详见&#xff1a;releases 以及 使用说明 最新特性表 开发…

13-至少有5名直接下属的经理(高频 SQL 50 题基础版)

13-至少有5名直接下属的经理 select name from Employee where id in (select managerId -- 查找大于5的经理idfrom Employeegroup by managerId -- 根据id分组having count(*)>5); -- 根据分组的数据进行求个数

java连接MySQL数据库

环境准备 JDK安装 Navicat MySQL安装 下载jar包 MySQL :: Download MySQL Connector/J (Archived Versions) 创建数据库 1. 打开Navicat 2. 新建数据库 3. 定义数据库名 4. 新建查询 运行如下代码创建表log CREATE TABLE log (user VARCHAR(255) NOT NULL UNIQUE,pwd …

未见过类型题每周总结(个人向)

1.DP40 小红取数 题目 解析 一道01背包的衍生问题&#xff0c;我们可以按照它的思路定义数组dp[i][j],表示前i个数中%k为j的最大和。为什么设置未%k的最大和呢&#xff1f;是因为当两个数分别%k&#xff0c;如a%kx&#xff0c;b%ky。那么&#xff08;ab&#xff09;%k&#…

C++基础与深度解析 | 类进阶 | 运算符重载 | 类的继承 | 虚函数

文章目录 一、运算符重载二、类的继承1.类的继承2.虚函数 一、运算符重载 在C中&#xff0c;operator关键字用于重载运算符&#xff0c;使得类的实例可以使用内置的操作符&#xff08;如、-、*、/等&#xff09;进行操作。 运算符重载的特性&#xff1a; 重载不能发明新的运算…

通信协议:常见的芯片间通信协议

相关阅读 通信协议https://blog.csdn.net/weixin_45791458/category_12452508.html?spm1001.2014.3001.5482 本文将简单介绍一些常见的芯片间通信协议&#xff0c;但不会涉及到协议的具体细节。首先说明&#xff0c;芯片间通信方式根据通信时钟的区别可以分为&#xff1a;异步…

上位机图像处理和嵌入式模块部署(f407 mcu中的网络开发)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 和大家想的不太一样&#xff0c;只要mcu当中带有了mac ip&#xff0c;那么就意味着mcu本身支持了网络开发。但是如果需要mcu支持完整的tcp/ip&…