【Python---六大数据结构】

🚀 作者 :“码上有前”
🚀 文章简介 :Python
🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬
请添加图片描述

Python---六大数据结构

  • 往期内容
  • 前言
    • 概述一下
    • 可变与不可变
  • Number
    • 四种不同的数值类型
    • Number类型的创建
    • isinstance 和 type 的区别在于
    • Number类型的方法
    • 其他方法
  • String
    • 字符串的创建
    • 访问字符串中的值
      • 切片
      • 索引
    • 字符串的运算
    • 字符串的格式化
    • 字符串格式化符号
    • 字符串内建函数
  • Tuple
    • 元组的创建
    • 关于元组不可变
    • 访问元组
      • 切片
      • 下标
    • 元组运算符
    • 元组内置函数
  • List
  • Set
    • 集合的创建
    • 集合的运算
  • Dict
    • 字典的创建
    • 访问字典里的值
    • 字典内置函数和方法

往期内容

【Python–vscode常用快捷键,必收藏!】
【Python–代码规范 】
【Python --优雅代码写法】
【Python–Python2.x与Python3.x的区别】
【Python–Web应用框架大比较】
【Python—内置函数】
【Python—六大数据结构】
【python–迭代生成器闭包面向对象继承多态】
【Python–定时任务的四种方法】
【Python–迭代器和生成器的区别】
【Python–读写模式全解】
【Python–高级教程】
【Python–网络编程之DHCP服务器】
【Python–网络编程之Ping命令的实现】
【Python–网络编程之TCP三次握手】

前言

概述一下

对于任何一种语言来说,数据结构都是对逻辑处理,数据操纵非常重要的。
而数据结构的基础就是数据类型,掌握数据类型的定义,属性,方法,增删改查等操纵。
值得一提的是,相比于其他的语言,Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。
等号(=)用来给变量赋值。等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。
类型类型,因此他们要类,python语言也是有面向对象的设计思想,这些基本的数据类型也都是类。

可变与不可变

对于其他语言来说,没有这一概念,如java,c,js等。但是在python中存在。我们把数据类型分为可变数据类型和不可变数据类型,如下所示:

  • 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组)
  • 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)

Number

四种不同的数值类型

  • 整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点
  • 长整型(long integers) - 无限大小的整数,整数最后是一个大写或小写的L。
  • 浮点型(floating point real values) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250) (py3已经移除)
  • 复数(complex numbers) - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。
  • 布尔型(Bool)–只有真和假两个值

Number类型的创建

# 我们创建基本的Number类型,并输出他们的值和类型
a, b, c, d = 20, 5.5, True, 4+3j
print(a, type(a), b, type(b), c, type(c), d, type(d))

# 此外还可以用 isinstance 来判断
print(isinstance(a, int)) # TURE

d.real # 4 表示取复数4的实部
d.imag # 3表示取d的虚部

isinstance 和 type 的区别在于

# type()不会认为子类是一种父类类型。
# isinstance()会认为子类是一种父类类型。
#Python3 中,bool 是 int 的子类,True 和 False 可以和数字相加, True==1、False==0 会返回 True,但可以通过 is 来判断类型。 即True和False可以与数字参加运算
 1 is True # fA

Number类型的方法

## 删除一个变量
a = 10
# 可以通过使用del语句删除单个或多个对象的引用
# shanchu
del a
print(a)  # NameError: name 'a' is not defined

其他方法

abs(x) # 取x的绝对值
fabs(x) # 以浮点数返回x的绝对值
ceil(x) # 对x向上取整
floor(x) # 对x向下取整
round(x [,n]) # 对x四舍五入,n表示舍入到小数点后多少位
exp(x) # 求x的e次幂
log(x) # 对x求以2为底的对数
log10(x) # 对x求以10对底的对数
max(x1, x2,...) # 取数字的最大值
min(x1, x2,...) # 取数字的最小值
modf(x) # 对x的整数部分和小数部分,两部分的数字
pow(x, y) # 求x的y次幂
## Number数据类型转换 
# 有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。
# int(x,10) 将x转换为一个整数。基数为10
# float(x) 将x转换到一个浮点数。
# complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
# complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。

String

字符串的创建

# 单引号
str = '单引号'
# 双引号
str1 = '"双引号实例"

# 三引号
para_str = """这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
print (para_str)

访问字符串中的值

切片

str = str[::] # 获取所有字符串
str = str[1:] # 获取第二个往后的所有字符串
str = str[:5] # 获取第六个元素的前面所有元素 ,即前五个元素
str = str[1:4] # 获取第二个到

索引

str = str[-1] # 获取倒数第一个
str = str[1] # 获取第二个元素

字符串的运算

str = 'string'
str = str + str # 链接运算符
str = str * 2 # 倍乘运算符
'str' in str # true not in 同理

字符串的格式化

# 字符串的格式化有三种情况
# 第一种:原始的先用%s或者是%d代替
print ("我叫 %s 今年 %d 岁!" % ('小明', 10))
# 第二种:使用format()函数

# 第三种使用f格式化字符串,很像js里面的插值语法
# 这种方法更简单 不不用再去判断使用 %s,还是 %d。
name = 'xiaoming'
age = 19
print (f"我叫{name } 今年 {age } 岁!" )
# 也可以是表达式
print(f'{1+2}' ) # 3

字符串格式化符号

符号含义
%c格式化字符及其ASCII码
%s格式化字符串
%d格式化整数
%u格式化无符号整型
%o格式化无符号八进制数
%x格式化无符号十六进制数
%X格式化无符号十六进制数(大写)
%f格式化浮点数字,可指定小数点后的精度
%e用科学计数法格式化浮点数
%E作用同%e,用科学计数法格式化浮点数
%g%f和%e的简写
%G%f 和 %E 的简写
%p用十六进制数格式化变量的地址

字符串内建函数

capitalize() # 将字符串第一个字符转换成大写
count(str, beg= 0,end=len(string)) # 返回str在string中出现的次数
find(str, beg=0, end=len(string)) # 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1
index(str, beg=0, end=len(string)) # 跟find()方法一样,只不过如果str不在字符串中会报一个异常。
isalnum() # 	如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False
isalpha() # 如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False

##待定 

Tuple

元组的创建

# Python 的元组与列表类似,不同之处在于元组的元素不能修改。
# 元组使用小括号 ( ),列表使用方括号 [ ]。
# 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
# 创建空元组
tup1 = ()

关于元组不可变

# 所谓元组的不可变指的是元组所指向的内存中的内容不可变。
tup = ('r', 'u', 'n', 'o', 'o', 'b')
tup[0] = 'g'     # 不支持修改元素
# 报错 TypeError: 'tuple' object does not support item assignment
id(tup)     # 查看内存地址
tup = (1,2,3)
id(tup) # id不一样了

# tuple元素不可变有一种特殊情况,当元素是可变对象时。对象内部属性是可以修改的!tuple的不可变限制只是在一个纬度上:元素的类型。
# 实现理解,tuple的元素所保存的内容(数值或内存地址)是不允许修改的,但地址映射的对象自身是可以修改的。

访问元组

切片

下标

元组运算符

# del tuple 删除一个元素
# +  链接两个元组
# * 重复两个元组

元组内置函数

len(tuple) # 计算元组长度
max(tuple) # 求元组的最大值
min(tuple) # 求元组的最小值
tuple(iterable) #将可迭代系列转换为元组

	

List

Set

集合的创建

# 集合(set)是一个无序的不重复元素序列。
# 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

集合的运算

# 可使用 & - ^ 等进行交 差 不同时包含集合a和b的元素

Dict

字典的创建

# 字典是另一种可变容器模型,且可存储任意类型对象。
# 字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2, key3 : value3 }

# 特别注意的是:
# 键必须是唯一的,但值则不必,不然后面的会被覆盖。
# 值可以取任何数据类型,但键必须是不可变的,如字符串,数字。

# 创建空字典
emptyDict = {}
# 查看字典的数量
print("Length:", len(emptyDict)) # Length: 0 <class 'dict'>

#注意:不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住

访问字典里的值

tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
 
 # 使用[]包含键
print ("tinydict['Name']: ", tinydict['Name'])
print ("tinydict['Age']: ", tinydict['Age'])

# 可直接修改
# 也可直接赋值添加

# 删除字典元素,即可删除键值对,也可删除字典本身
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
 
del tinydict['Name'] # 删除键 'Name'
tinydict.clear()     # 清空字典
del tinydict         # 删除字典

字典内置函数和方法

# 内置函数
len(dict)
str(dict)


# 内置方法
dict.clear()
dict.copy()
dict.fromkeys()
dict.get(key, default=None)
key in dict
key in dict
popitem() #返回并删除字典中的最后一对键和值
pop(key[,default]) #删除字典 key(键)所对应的值,返回被删除的值。

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

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

相关文章

一、ActiveMQ介绍

ActiveMQ介绍 一、JMS1.jms介绍2.jms消息传递模式3.JMS编码总体架构 二、消息中间件三、ActiveMQ介绍1.引入的原因1.1 原因1.2 遇到的问题1.3 解决思路 2.定义3.特点3.1 异步处理3.2 应用系统之间解耦3.3 实际-整体架构 4.作用 一、JMS 1.jms介绍 jms是java消息服务接口规范&…

Android安卓架构MVC、MVP、MVVM模式的概念与区别

目录 MVC框架 MVP框架 MVVM框架 MVVM与MVP区别 MVVM与MVC区别 MVC、MVP、MVVM模式哪个要好一些 MVC&#xff08;Model-View-Controller&#xff09;、MVP&#xff08;Model-View-Presenter&#xff09;、MVVM&#xff08;Model-View-ViewModel&#xff09;是三种常见的软…

Flume(二)【Flume 进阶使用】

前言 学数仓的时候发现 flume 落了一点&#xff0c;赶紧补齐。 1、Flume 事务 Source 在往 Channel 发送数据之前会开启一个 Put 事务&#xff1a; doPut&#xff1a;将批量数据写入临时缓冲区 putList&#xff08;当 source 中的数据达到 batchsize 或者 超过特定的时间就会…

元器件焊盘的PCB处理方式分析与总结

对于高速信号走线的特性阻抗&#xff0c;都需要按照实际要求进行精度控制&#xff0c;所以&#xff0c;任何因设计因素带来的阻抗波动都应该进行优化&#xff0c;如下图所示&#xff0c;为一个12层板设计中的50Ω微带走线&#xff0c;需要在走线之上放置电感&#xff1b; 但是&…

N-144基于微信小程序在线订餐系统

开发工具&#xff1a;IDEA、微信小程序 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 前端技术&#xff1a;vue、ElementUI、 Vant Weapp 服务端技术&#xff1a;springbootmybatisredis 本系统分微信小程序和…

Sora时代,我们的AI应该何去何从?——关于Sora大模型的思考

Sora时代&#xff0c;我们的AI应该何去何从?——关于Sora大模型的思考 一、Sora大模型&#xff1a;横空出世&#xff0c;让AI生成所有领域瑟瑟发抖二、Sora的出现代表了相关行业的灭亡&#xff1f;三、我们将何去何从&#xff1f; 一、Sora大模型&#xff1a;横空出世&#xf…

【数据结构】二叉查找树和平衡二叉树,以及二者的区别

目录 1、二叉查找树 1.1、定义 1.2、查找二叉树的优点 1.2、查找二叉树的弊端 2、平衡二叉树 2.1、定义 2.2、 实现树结构平衡的方法&#xff08;旋转机制&#xff09; 2.2.1、左旋 2.2.2、右旋 3、总结 1、二叉查找树 二叉查找树又名二叉排序树&#xff0c;亦称二叉搜…

WebStorm | 如何修改webstorm中新建html文件默认生成模板中title的初始值

在近期的JS的学习中&#xff0c;使用webstorm&#xff0c;总是要先新建一个html文件&#xff0c;然后再到里面书写<script>标签&#xff0c;真是麻烦&#xff0c;而且标题也是默认的title&#xff0c;想改成文件名还总是需要手动去改 经过小小的研究&#xff0c;找到了修…

阅读笔记(BMSB 2018)Video Stitching Based on Optical Flow

参考文献 Xie C, Zhang X, Yang H, et al. Video Stitching Based on Optical Flow[C]//2018 IEEE International Symposium on Broadband Multimedia Systems and Broadcasting (BMSB). IEEE, 2018: 1-5. 摘要 视频拼接在计算机视觉中仍然是一个具有挑战性的问题&#xff0…

软件工程师,为什么不喜欢关电脑

概述 你是否注意到&#xff0c;软件工程师们似乎从不关电脑&#xff0c;也不喜欢关电脑&#xff1f;别以为他们是电脑“上瘾”&#xff0c;或是沉迷于电脑&#xff0c;这一现象背后蕴含着多种实际原因。 1、代码保存与恢复。 在编写代码过程中&#xff0c;遇到问题时可能会暂时…

【打工日常】使用docker部署Dashdot工具箱

一、Dashdot介绍 dashdot是一个简洁清晰的服务器数据仪表板&#xff0c;基于React实现 &#xff0c;主要是显示操作系统、进程、存储、内存、网络这五个的数据。 二、本次实践介绍 1. 本次实践简介 本次实践部署环境为个人测试环境 2. 本地环境规划 本次实践环境规划&#xf…

【leetcode】深搜、暴搜、回溯、剪枝(C++)3

深搜、暴搜、回溯、剪枝&#xff08;C&#xff09;3 一、解数独1、题目描述2、代码3、解析 二、单词搜索1、题目描述2、代码3、解析 三、黄金矿工1、题目描述2、代码3、解析 四、不同路径III1、题目描述2、代码3、解析 一、解数独 1、题目描述 leetcode链接 2、代码 class…

机器学习西瓜书之决策树

目录 算法原理剪枝处理连续值处理缺失值处理多变量决策树 算法原理 从逻辑角度&#xff1a;通过一系列if-else语句进行多重判断&#xff0c;比如白富美的判断条件&#xff08;“白”“富”“美”&#xff09;。 从几何角度&#xff1a;根据定义的标准进行样本空间的划分。 以二…

如何在CSS中实现背景图片的渐变?

--引言 在CSS中&#xff0c;实现背景图片的渐变通常需要使用linear-gradient或者radial-gradient函数&#xff0c;这些函数可以与背景图像一起使用来创建渐变效果。然而&#xff0c;CSS的渐变并不直接支持使用图像作为渐变的颜色停止点。但你可以通过一些技巧来实现类似的效果…

每日一题 429.N叉树的层序遍历

429. N 叉树的层序遍历 描述&#xff1a; 给定一个 N 叉树&#xff0c;返回其节点值的层序遍历。&#xff08;即从左到右&#xff0c;逐层遍历&#xff09;。 树的序列化输入是用层序遍历&#xff0c;每组子节点都由 null 值分隔&#xff08;参见示例&#xff09;。 示例 1…

谷歌新动作:双子模型大放送,开发者福音来了!

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

SQL29 计算用户的平均次日留存率(lead函数的用法)

代码 with t1 as(select distinct device_id,date --去重防止单日多次答题的情况from question_practice_detail ) select avg(if(datediff(date2,date1)1,1,0)) as avg_ret from (selectdistinct device_id,date as date1,lead(date) over(partition by device_id order by d…

神经网络学习小记录78——Keras CA(Coordinate attention)注意力机制的解析与代码详解

神经网络学习小记录78——Keras CA&#xff08;Coordinate attention&#xff09;注意力机制的解析与代码详解 学习前言代码下载CA注意力机制的概念与实现注意力机制的应用 学习前言 CA注意力机制是最近提出的一种注意力机制&#xff0c;全面关注特征层的空间信息和通道信息。…

走近 Next.js:全栈框架的简介与应用

微信搜索“好朋友乐平”关注公众号。 1. Next.js Next.js 是一个使用 React 构建单页应用程序&#xff08;SPA&#xff09;的开源 JavaScript 框架。它使得构建服务端渲染&#xff08;SSR&#xff09;和静态网站生成&#xff08;SSG&#xff09;的 React 应用程序变得简单和高…

安全基础~通用漏洞5

文章目录 知识补充CSRFSSRFxss与csrf结合创建管理员账号 知识补充 NAT&#xff1a;网络地址转换&#xff0c;可以将IP数据报文头中的IP地址转换为另一个IP地址&#xff0c;并通过转换端口号达到地址重用的目的。即通过将一个外部IP地址和端口映射更大的内部IP地址集来转换IP地…