Python18 数据结构与数据类型转换

图片

1.python中的数据结构

在Python中,数据结构是用来存储、组织和管理数据的方式,以便有效地执行各种数据操作。Python提供了几种内置的数据结构,每种都有其特定的用途和操作方法。以下是Python中一些主要的数据结构:

1.列表(List):

    • 列表是一种有序的数据集合,可以动态地增加和减少元素。

    • 列表中的元素可以是不同类型的,可以包含重复值。

    • 列表支持索引和切片操作,可以通过索引访问或修改其中的元素。

2.元组(Tuple):

    • 元组与列表类似,但是一旦创建就不能被修改(不可变)。

    • 元组通常用于保护数据不被修改,以及当函数需要返回多个值时。

3.字典(Dictionary):

    • 字典是基于键值对的数据结构,可以快速检索存储的数据。

    • 每个键值对映射一个键到一个值。键必须是唯一的,而值则可以是任何数据类型。

    • 字典是无序的,但从Python 3.7开始,字典维护元素的插入顺序。

4.集合(Set):

    • 集合是一个无序的元素集,自动排除任何重复项。

    • 集合主要用于测试成员资格、去除重复项和执行数学上的集合操作(如交集、并集、差集等)。

5.栈(Stack):

    • 栈是一个后进先出(LIFO)的数据结构,只能在一端(通常是顶部)进行添加或移除元素。

    • Python中没有内置的栈数据结构,但可以使用列表来实现栈的功能。

6.队列(Queue):

    • 队列是一个先进先出(FIFO)的数据结构,元素从一端添加,从另一端移除。

    • Python的collections模块提供了deque,支持从两端快速添加和删除元素,适用于队列实现。

这些数据结构是编程中的基本工具,帮助开发者有效管理和处理数据。

2.列表List

查看特定元素的索引:

a=[1,2,3,3]
b=[4,5,6]# 查看元素的索引 2的索引为1
a.index(2)  # 1

合并两个列表:

# 合并两个列表
a.extend(b)
a  # [1, 2, 3, 3, 4, 5, 6]

删除列表特定元素:

# 删除列表元素
a.remove(3)
a  # [1, 2, 3, 4, 5, 6]

列表添加元素:

# 添加元素
a.append(1)
a  # [1, 2, 3, 4, 5, 6, 1]

翻转列表:

# 翻转列表
a.reverse()
a  # [1, 6, 5, 4, 3, 2, 1]

列表排序:

# 列表排序
a.sort()
a  # [1, 1, 2, 3, 4, 5, 6]

列表弹出元素:

# 弹出元素
a.pop(1)
a  # [1, 2, 3, 4, 5, 6]

计算元素个数:

# 计算列表中4的个数
a.count(4)  # 1

列表去重:

# 列表去重
a=[1, 4, 4, 5, 5, 5, 6, 6, 6]
a=list(set(a))
a  # [1, 4, 5, 6]

去重并保持index不变:

# 去重保持index不变
ids = [1,4,3,3,4,2,3,4,5,6,1]
news_ids = list(set(ids))
news_ids.sort(key=ids.index)
news_ids  # [1, 4, 3, 2, 5, 6]

对以元组为元素的列表进行条件排序:

# sorted函数
import operator
students=[('yan','A',15),('qiang','B',17),('li','O',20)]
# 按照年龄进行逆排序(从大向小)
sorted(students,key=operator.itemgetter(2),reverse=True)
# [('li', 'O', 20), ('qiang', 'B', 17), ('yan', 'A', 15)]

列表转换成元组:

# 将列表转换成元组
a = [1, 4, 5, 6]
tuple(a)  # (1, 4, 5, 6)

列表切片操作:

li=[1,2,3,4,5,6,7]
li[1:]  # [2, 3, 4, 5, 6, 7]
li[::-1]  # [7, 6, 5, 4, 3, 2, 1]
# 步长为2
li[::2]  # [1, 3, 5, 7]

3.字符串String

a="helloworld"
max(a)  # 'w'
min(a)  # 'd'
len(a)  # 10
# 获取指定元素的index
a.index('h')  # 0
bool('o' in a)  # True
a+a  # 'helloworldhelloworld'
a*3  # 'helloworldhelloworldhelloworld'
a[5]  # a[5]
a[1:4]  # 'ell'
a[-1]  # 'd'

4.字符串、元组、列表和字典转换

字典转其他数据类型:

dict={'name':'quincy','age':7,'class':'First'}
#字典转换成字符串
print(str(dict),type(str(dict)))
# {'name': 'Cheney', 'age': 30, 'class': 'First'} <class 'str'>
# 字典转成元组
print(tuple(dict))
# ('name', 'age', 'class')
# 字典的值转换成元组
print(tuple(dict.values()))
# ('Cheney', 30, 'First')
#字典索引转换成列表
print(list(dict))
# ['name', 'age', 'class']
#字典的值转换成列表
print(list(dict.values()))
# ['Cheney', 30, 'First']

元组转其他数据类型:

tup=(1,2,3,4,5)
# 元组转换成字符串
print(str(tup),type(str(tup)))
tup_str=str(tup)  # (1, 2, 3, 4, 5) <class 'str'>
# for ele in tup_str:
#     print(ele)
# 元组转换成列表
print(list(tup))  # [1, 2, 3, 4, 5]

元组不可以转化成字典。

列表转其他数据类型:

nums=[1,2,3,4,5,6,7]
# 将列表转换成字符串
print(str(nums), type(str(nums)))  # [1, 2, 3, 4, 5, 6, 7] <class 'str'>
# 将列表转换成元组
print(tuple(nums))  # (1, 2, 3, 4, 5, 6, 7)

列表不可以转换成字典。

字符串转其他数据类型:

# 字符串转化为元组
print(tuple(eval("(1,2,4)")))  # (1, 2, 4)
# 将字符串转化为列表
print(list(eval("[1,2,4]")))  # [1, 2, 4]
# 将字符串转为字典
# eval 将字符串str当成有效的表达式来求值并返回计算结果。
print(eval("{'name':'cheney','age':23}"))
print(type(eval("{'name':'Cheney','age':23}")))# {'name': 'cheney', 'age': 23}
<class 'dict'>

以上内容总结自网络,如有帮助欢迎转发,我们下次再见!

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

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

相关文章

攻防世界-2-1

下载附件&#xff0c;发现是一张损坏的png文件&#xff0c;扔winhex里面修改文件头 修改之后发现还是打不开&#xff0c;提示CRC错误&#xff0c;脚本跑一下 循环冗余校验CRC&#xff08;Cyclic Redundancy Check&#xff09;是数据通信领域常用的一种数据传输检错技术。通过在…

记录Nuxt3部署线上pm2启动项目修改端口

看官方文档&#xff1a; TNND&#xff0c;修改这个端口号顶个P用&#xff0c;毛用也没有 实际上应该是这样&#xff1a; 好了&#xff0c;误人子弟&#xff5e;

Windows 11 version 23H2 中文版、英文版 (x64、ARM64) 下载 (updated Jun 2024)

Windows 11 version 23H2 中文版、英文版 (x64、ARM64) 下载 (updated Jun 2024) Windows 11, version 23H2&#xff0c;企业版 arm64 x64 请访问原文链接&#xff1a;https://sysin.org/blog/windows-11/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者…

全球芯片的关键节点

在制造1纳米级别的芯片过程中&#xff0c;涉及到多个关键方面&#xff0c;每个方面都至关重要&#xff0c;包括设备、关键原材料的供应、芯片设计和操作人员的技能与决策能力。 首先&#xff0c;设备是实现1纳米芯片制造的基础。阿斯麦&#xff08;ASML&#xff09;等公司提供…

vue3实现无缝滚动列表-vue3-seamless-scroll

vue3-seamless-scroll-无缝滚动 vue3-seamless-scroll&#xff0c;顾名思义是应用在vue3项目中&#xff0c;在Vue3项目中难免会遇到让列表无缝滚动的需求&#xff0c;本篇文章介绍了关于vue3项目中如何实现表格内容无缝滚动及其属性的使用&#xff0c;需要的朋友可以参考一下。…

太速科技-基于AD916X的直流至 12 GHz 矢量信号发生器 FMC子卡

基于AD916X的直流至 12 GHz 矢量信号发生器 FMC子卡 一、DAC 性能指标&#xff1a; ● DAC 型号&#xff1a;AD9163。 ● 分辨率&#xff1a;16bits。 ● DAC 更新速率&#xff1a;12GSPS。 ● 6GSPS 直接 RF 频率合成。 ● 直流至 3GHz&#xff08;不归零 NRZ 模式&…

VB.net调用VC DLL(二)

参考文献5&#xff0c;讲了在C程序中直接调用DLL和lib的函数方法&#xff0c;不是通过编译器连接方式 也讲了在非C程序中直接调用DLL和lib的函数方法。 实操了一下&#xff0c;建了win32dll项目 新建.h文件和.cpp文件 .h文件中加&#xff1a; void __stdcall funcA(double…

粉笔1000题——判断推理

目录 一、图形推理1. 位置规律平移旋转、翻转 二、定义判断三、类比推理四、逻辑判断 一、图形推理 1. 位置规律 平移 旋转、翻转 二、定义判断 三、类比推理 四、逻辑判断

Python+Pytest+Yaml+Request+Allure框架源代码之(一)common公共方法封装

common模块&#xff1a; get_path.py&#xff1a;获取路径方法 # -*- coding: UTF-8 -*- import os# 项目根目录 BASE_DIR os.path.dirname(os.path.dirname(os.path.abspath(__file__)))# 配置文件目录 CONFIG_DIR os.path.join(BASE_DIR,config)# 测试用例文件目录 TESTCA…

[SAP ABAP] 删除内表数据

1.利用索引删除数据 语法格式 DELETE <itab> INDEX <idx>. <itab>&#xff1a;代表内表 <idx>&#xff1a;代表索引值 删除内表<itab>中的第<idx>条记录 示例1 lt_student内表中存在3条数据记录 我们使用如下指令删除内表中的第一条数…

Linux 7种 进程间通信方式

传统进程间通信 通过文件实现进程间通信 必须人为保证先后顺序 A--->硬盘---> B&#xff08;B不知道A什么时候把内容传到硬盘中&#xff09; 1.无名管道 2.有名管道 3.信号 IPC进程间通信 4.消息队列 5.共享内存 6.信号灯集 7.socket通信 一、无名管道&a…

mysql中in参数过多该如何优化

优化方式概述 未优化前 SELECT * FROM rb_product rb where sku in(1022044,1009786)方案2示例 public static void main(String[] args) {//往list里面设置3000个值List<String> list new ArrayList<>();for (int i 0; i < 3000; i) {list.add(""…

我在高职教STM32——LCD液晶显示(3)

大家好&#xff0c;我是老耿&#xff0c;高职青椒一枚&#xff0c;一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次&#xff0c;同行应该都懂的&#xff0c;老师在课堂上教学几乎是没什么成就感的。正因如此&#xff0c;才有了借助 CSDN 平台寻求认同感和成就…

Matplotlib的原理与使用详解

文章目录 引言Matplotlib 的原理1. 底层结构2. 绘图流程3. 绘图引擎 Matplotlib 的使用1. 基本使用流程2. 自定义图表3. 保存图表 结论 引言 Matplotlib 是一个 Python 的 2D 绘图库&#xff0c;它提供了丰富的绘图接口&#xff0c;使得用户能够轻松创建各种高质量的图表。从简…

利用 Microsoft ChatGPT 和 OPC UA 改变工业格局

在本文中&#xff0c;我们将探讨开放性在工业物联网中的作用&#xff0c;以及Microsoft为创建基于OPC UA的开放平台所做的努力。我们将讨论 Microsoft 开放战略的四大支柱&#xff0c;以及标准化信息模型以实现互操作性的重要性。此外&#xff0c;我们将深入探讨传统接口和数据…

Redis单线程为什么快

首先&#xff0c;需要明确&#xff0c;Redis只有redis-server是单线程的&#xff0c;指所有的命令处理流程在一个线程中处理。 Redis是内存数据库&#xff0c;所有操作都是基于内存的&#xff0c; 不是CPU密集型的。数据结构高效&#xff0c;不同的对象类型有不同的具体实现。…

一键智能整理TXT文档,高效删除连续行,轻松提升工作效率与数据管理效能

信息爆炸的时代&#xff0c;TXT文档作为我们日常工作中不可或缺的一部分&#xff0c;承载着大量的数据和信息。然而&#xff0c;随着文档内容的不断增加&#xff0c;连续重复的行数也逐渐增多&#xff0c;这不仅影响了文档的整洁度&#xff0c;还大大降低了我们处理数据的效率。…

自己本次吃东西的反思:

使用吃东西来应对情绪是一种常见的习惯&#xff0c;但长期来看&#xff0c;可能不是最健康的应对机制。以下是一些建议&#xff0c;帮助你找到更平衡的应对情绪的方法&#xff1a; 1. **意识到习惯**&#xff1a; - 首先&#xff0c;意识到你在不同情绪状态下使用食物作为应对机…

Java集合框架源码分析:HashSet

一、HashSet特性 特性描述是否允许为null允许是否允许数据重复不允许是否有序无序是否线程安全非线程安全 二、HashSet底层实现 HashSet的底层实现是基于HashMap的。构造方法如下&#xff1a; public HashSet() {map new HashMap<>();}public HashSet(int initialCap…

Shell语法全解

Shell基础语法全解 一、shell简介二、shell格式2.1 新建一个shell脚本文件2.2 执行脚本方式 三、变量3.1系统变量3.2自定义变量3.3 特殊变量3.3.1 $n 传入变量3.3.2 $# 输入参数个数3.3.3 $*、$ 输入参数内容3.3.4 $? 上一条命令执行结果 四、运算符 $[]、$(())五、条件判断5.…