搞定Python的几个常用数据结构!

简介: 搞定Python的几个常用数据结构!

简说Python,号主老表,Python终身学习者,数据分析爱好者,从18年开始分享Python知识,原创文章227篇,写过Python、SQL、Excel入门文章,也写过Web开发、数据分析文章,老表还总结整理了一份2022Python学习资料和电子书资源,关注后私信回复:2022 即可领取。

数字类型

  • 整数:int
  • 浮点数:float

python中的数据类型==仅有int和float两种==(没有如short,long,double之分)

具体运算中数据的类型

这里查看各种情况的数据类型运用到了python中的==type函数==

print(type(1))
print(type(-1))
print(type(1.1111))
print(type(1+1))
print(type(1+1.0))  # 由于1.0为float类型,python将1+1.0自动转化为float类型
print(type(1*1))
print(type(1*1.0))
#  python中的除法使用'/'结果为float类型,使用"//"为int类型
print(type(2/2))
print(type(2//2))
print(type(1//2))  # 与其他语言类似python中整除会忽略小数点后数字

运行结果:

image.png

==小结:==

  • 1、只要式子中出现了浮点型数字(小数)最终整体类型都会变成float类型
  • 2、使用'/'结果为float类型,使用"//"为int类型(第一点优先级最高)
  • 3python中整除会忽略小数点后数字,向下取整

布尔类型:bool ==python中,布尔类型也是数字的一种==

不同情况下的布尔类型

#  bool类型包括 True和 False两种
print(type(True))
print(type(False))
#  将bool类型转换为int类型
print(int(True))
print(int(False))
#  python中0为假,非0为真(无论进制)
print(bool(1))
print(bool(0))
print(bool(2.2))
print(bool(0b10))
#  对字符串取布尔值
print(bool('abc'))
print(bool(''))
#  对列表取布尔值
print(bool([1,2,3]))
print(bool([]))

运行结果:

image.png

==小结==

  • True和False开头需大写
  • 数字中:0为False,其他均为True;在其他类型中:空为False,非空为True

各进制的表示与转换

进制的表示

  • 二进制:0b
  • 八进制:0o
  • 十六进制:0x
# 二进制标识符为 0b,打印输出其代表的十进制数
print(0b10)
print(0b11)
# 八进制标识符为 0o,打印输出其代表的十进制数
print(0o10)
print(0o11)
# 十六进制标识符为 0x,打印输出其代表的十进制数
print(0x10)
print(0x1F)
# 输入数字默认为十进制
print(10)

结果:

image.png

==小结==:需牢记各种进制的表示形式

进制的转换

  • 转换为二进制(binary):bin()
  • 转换为八进制(octal):oct()
  • 转换为十进制:int()
  • 转换为十六进制(hexadecimal):hex()
# 转换为二进制
print(bin(10))
print(bin(0o7))
print(bin(0xE))
# 转换为八进制
print(oct(0b111))
print(oct(0x777))
# 转换为十进制
print(int(0b111))
print(int(0o777))
# 转换为十六进制
print(hex(888))
print(hex(0b111))
print(hex(0o7777))

运行结果:

image.png

序列

str字符串

  • 字符串类型表示为单/双引号内的内容,由于英文语句中可能出现单引号的情况(Let's go),此时可使用双引号扩起字符串中的内容
print("Let't go")
print('Let't go')  #  其中此语句会报错

运行结果:

image.png

字符串的运算

  • 两字符串间可相加拼接成一个字符串
  • 字符串乘上一个数n,得到n个该字符串
#  字符串的运算
print("he"+"llo")
print("hello"*3)

结果

image.png

获取单个字符

  • 在str后添加[i](i代表想要获取str中的位置下标),可获取指定位置字符
#  输出指定位置的字符
print("hello world"[0])
print("hello world"[1])
print("hello world"[2])
print("hello world"[-1])
print("hello world"[-2])

结果

image.png

其中==i可为负数==,代表获取倒数第i位的数字

获取指定区间内的字符串

  • 使用‘:’对起始位置和末尾位置进行连接,如:[m:n+1]表示截取str中下标为==m~n+1==的字符串进行截取(==n+1位置取开区间==) [m:]则表示由下标为m的位置一直截取到末尾
#  截取指定区域的字符串
print("hello world"[0:5])
print("hello world"[-5:11])
print("hello world"[-5:])

image.png

列表(list)

列表存储的数据类型

  • 列表中可存储任意元素
#  列表可存储的类型
print(type([1, 2, 3, 4, 5]))
print(type(["hello", 1, False]))
print(type([[1, 2], [3, 4], [True, False]]))  # 嵌套列表

image.png

读取列表中的元素

  • 读取列表中的元素方法与str相同
#  读取列表中的元素
print(["hello", "world"][0:])  # 和str类型的读取方式相同

image.png

列表的运算

  • 与str的运算相似
#  列表的运算(和str的运算相似)
print(["hello", "world"] + ["hello", "world"])
print(["hello", "world"] * 3)

image.png

元组(tuple)

  • 元组的基本使用方法,存储数据的规则和列表相同,它们的区别主要在以下几点:
  1. 列表是动态数组,它们可变且可以重设长度(改变其内部元素的个数)。
  2. 元组是静态数组,它们不可变,且其内部数据一旦创建便无法改变。
  3. 元组缓存于Python运行时环境,这意味着我们每次使用元组时无须访问内核去分配内存。

对元组的基本操作

#  元组存储是数据类型
print(type((1, 2, 3, 4, 5)))
print(type((1, 2, "hello", [1, 2, 3], True)))
#  获取指定位置元素
print((1, 2, 3, 4)[2])
#  获取指定区域元素
print((1, 2, 3, 4)[1:])
print(type((1, 2, 3, 4)[1:]))  # 返回类型为tuple
#  元组的运算
print((1, 2, 3, 4)+(5, 6))
print((1, 2, 3, 4)*2)

image.png

序列总结

  • 提取指定位置元素方法:序列后面紧跟[i]
  • 提取指定区间元素方法:序列后面紧跟[m : n](m,n为区间下标,n为开区间)

==序列这种类型对其中的元素操作方法完全相同==

集合(set)

  • 集合中的数据是==无序的==,故==不能用下标==进行访问
  • 集合中的元素==不重复==

集合的运算

  • 集合的运算方法和数学中集合运算方法相同
#  求两个集合的差集
print({1, 2, 3, 4, 5, 6} - {2, 3})  # '-'为求差集的符号
#  求两个集合的交集
print({1, 2, 3, 4, 5, 6} & {2, 3})  # '&'为求交集的符号
#  求两个集合的并集
print({1, 2, 3, 4, 5, 6} | {5, 6, 7})  # '-'为求差集的符号

image.png

  • 空集合的定义:
>>> set()

字典(dict)

  • 字典和集合定义的区别:dict:{key1:value1,key2:value2.....} set:{value1,value2....}
  • 字典中的键==不能重复也不可变==(如list列表就是可变类型)
  • 空字典用{}表示
#  字典类型的输入格式
print(type({1: 1, 2: 2, 3: 3}))
#  字典的使用
print({1:"Hello", 2:"world"}[2])

image.png

转义字符

image.png

知识点总结

image.png


相关文章
|
7天前
|
算法 安全 大数据
揭秘!Python堆与优先队列:数据结构的秘密武器,让你的代码秒变高效战士!
【7月更文挑战第8天】Python的heapq模块和queue.PriorityQueue提供堆与优先队列功能,助你提升算法效率。堆用于快速找大数据集的第K大元素,如示例所示,时间复杂度O(n log k)。PriorityQueue在多线程中智能调度任务,如模拟下载管理器,按优先级处理任务。掌握这些工具,让代码运行更高效!
21 1
|
20天前
|
存储 缓存 算法
Python中常用的数据结构与算法优化技巧指南
Python是一种强大而灵活的编程语言,它提供了丰富的数据结构和算法库,但是在处理大规模数据或者需要高效运行的情况下,需要考虑一些优化技巧。本文将介绍一些Python中常用的数据结构与算法优化技巧,并附带代码实例,帮助你更好地理解和运用。
|
3天前
|
算法 Python
逆袭之路!用 Python 玩转图的 DFS 与 BFS,让数据结构难题无处遁形
【7月更文挑战第12天】图的遍历利器:DFS 和 BFS。Python 中,图可表示为邻接表或矩阵。DFS 沿路径深入,回溯时遍历所有可达顶点,适合找路径和环。BFS 层次遍历,先近后远,解决最短路径问题。两者在迷宫、网络路由等场景各显神通。通过练习,掌握这些算法,图处理将游刃有余。
10 3
|
2天前
|
存储 算法 Python
“解锁Python高级数据结构新姿势:图的表示与遍历,让你的算法思维跃升新高度
【7月更文挑战第13天】Python中的图数据结构用于表示复杂关系,通过节点和边连接。常见的表示方法是邻接矩阵(适合稠密图)和邻接表(适合稀疏图)。图遍历包括DFS(深度优先搜索)和BFS(广度优先搜索):DFS深入探索分支,BFS逐层访问邻居。掌握这些技巧对优化算法和解决实际问题至关重要。**
9 1
|
3天前
|
存储 缓存 Python
Python中的列表(List)和元组(Tuple)是两种重要的数据结构
【7月更文挑战第12天】Python中的列表(List)和元组(Tuple)是两种重要的数据结构
6 1
|
5天前
|
存储 算法 调度
惊呆了!Python高级数据结构堆与优先队列,竟然能这样优化你的程序性能!
【7月更文挑战第10天】Python的heapq模块实现了堆和优先队列,提供heappush和heappop等函数,支持O(log n)时间复杂度的操作。优先队列常用于任务调度和图算法,优化性能。例如,Dijkstra算法利用最小堆加速路径查找。堆通过列表存储,内存效率高。示例展示了添加、弹出和自定义优先级元素。使用堆优化程序,提升效率。
15 2
|
19天前
|
存储 Python
Python中使用列表和字典来存储和处理复杂的数据结构
Python中使用列表和字典来存储和处理复杂的数据结构
|
2天前
|
存储 数据可视化 数据处理
`geopandas`是一个开源项目,它为Python提供了地理空间数据处理的能力。它基于`pandas`库,并扩展了其对地理空间数据(如点、线、多边形等)的支持。`GeoDataFrame`是`geopandas`中的核心数据结构,它类似于`pandas`的`DataFrame`,但包含了一个额外的地理列(通常是`geometry`列),用于存储地理空间数据。
`geopandas`是一个开源项目,它为Python提供了地理空间数据处理的能力。它基于`pandas`库,并扩展了其对地理空间数据(如点、线、多边形等)的支持。`GeoDataFrame`是`geopandas`中的核心数据结构,它类似于`pandas`的`DataFrame`,但包含了一个额外的地理列(通常是`geometry`列),用于存储地理空间数据。
4 0
|
7天前
|
算法 安全 调度
逆天改命!Python高级数据结构堆(Heap)与优先队列,让你的算法效率飙升至宇宙级!
【7月更文挑战第8天】Python的heapq模块和queue.PriorityQueue实现了堆和优先队列,提供高效算法解决方案。堆用于Dijkstra算法求解最短路径,例如在图论问题中;PriorityQueue则在多线程下载管理中确保高优先级任务优先执行。这两个数据结构提升效率,简化代码,是编程中的强大工具。
10 0
|
7天前
|
安全 调度 Python
Python堆与优先队列:不只是数据结构,更是你编程路上的超级加速器!
【7月更文挑战第8天】Python的heapq模块和queue.PriorityQueue提供堆与优先队列功能。堆,作为完全二叉树,支持排序性质,heapq用于单线程操作;PriorityQueue在多线程中保证安全。通过示例展示了如何插入、删除任务,以及在多线程任务调度中的应用。堆与优先队列是高效编程的关键工具,提升代码性能与并发处理能力。
9 0