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

news2025/2/2 20:10:52

图片

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.coloradmin.cn/o/1852474.html

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

相关文章

【大数据】—量化交易实战案例(基础策略)

声明&#xff1a;股市有风险&#xff0c;投资需谨慎&#xff01;本人没有系统学过金融知识&#xff0c;对股票有敬畏之心没有踏入其大门&#xff0c;所以只能写本文来模拟炒股。 量化交易&#xff0c;也被称为算法交易&#xff0c;是一种使用数学模型和计算机算法来分析市场数…

网络程序通信的流程

网络程序通信的流程&#xff1a; 1.通过ip地址找到网络中的设备 2.通过端口号找到对应进程的端口 3.传输数据时还需要使用传输协议&#xff08;TCP&#xff09;&#xff0c;保证数据的可靠性 4.socket完成进程之间网络数据的传输 ip地址的介绍 IP地址是互联网协议地址&#…

汉语拼音字母表 (声母表和韵母表)

汉语拼音字母表 [声母表和韵母表] 1. 汉语拼音声母表2. 汉语拼音韵母表References 1. 汉语拼音声母表 声母是韵母前的辅音&#xff0c;与韵母一起构成一个完整的音节。 辅音是发声时&#xff0c;气流在口腔中受到各种阻碍所产生的声音&#xff0c;发音的过程即是气流受阻和克…

AtCoder Beginner Contest 359(ABCDEFG题)视频讲解

A - Count Takahashi Problem Statement You are given N N N strings. The i i i-th string S i S_i Si​ ( 1 ≤ i ≤ N ) (1 \leq i \leq N) (1≤i≤N) is either Takahashi or Aoki. How many i i i are there such that S i S_i Si​ is equal to Takahashi? C…

idea2022激活

下载激活脚本 解压后&#xff0c;打开文件夹如下&#xff1a;ja-netfilter.jar 为激活补丁&#xff1a; 复制补丁所在的整个文件夹到硬盘某个位置 将 ja-netfilter补丁所在的整个文件夹移动到电脑上某个位置&#xff0c;我是放到了 D 盘下&#xff1a; &#xff08;路径中不…

Nginx负载均衡之Memcached缓存模块

Nginx 的 ngx_http_memcached_module 模块本身并没有提供缓存功能&#xff0c;它只是一个将用户请求转发到 Memcached 服务器的代理模块。 在以 Memcached 服务器为缓存应用的方案中&#xff0c;Memcached 作为内容缓存的存储服务器&#xff0c;用户通过 URL 为 Memcac…

Android面试题精选——再聊Android-Handler机制

​ static final ThreadLocal sThreadLocal new ThreadLocal(); //创建当前线程的Looper对象 private static void prepare(boolean quitAllowed) { if (sThreadLocal.get() ! null) { throw new RuntimeException(“Only one Looper may be created per thread”); } sThre…

【课程总结】Day10:卷积网络的基本组件

前言 由于接下来的课程内容将围绕计算机视觉展开&#xff0c;其中接触最多的内容是卷积、卷积神经网络等…因此&#xff0c;本篇内容将从卷积入手&#xff0c;梳理理解&#xff1a;卷积的意义、卷积在图像处理中的作用以及卷积神经网络的概念&#xff0c;最后利用pytorch搭建一…

详解互联网基石之HTTPS

一、HTTPS简介 HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff09;是一种用于安全通信的网络传输协议。它是HTTP的加密版本&#xff0c;通过使用TLS&#xff08;Transport Layer Security&#xff09;或其前身SSL&#xff08;Secure Sockets Layer&#xff09;来…

Leetcode3185. 构成整天的下标对数目 II

Every day a Leetcode 题目来源&#xff1a;3185. 构成整天的下标对数目 II 解法1&#xff1a;哈希 本质思路类同经典的“两数之和”。枚举右&#xff0c;用哈希表维护左。 枚举 j&#xff0c;并维护 cnt[x] 表示所有满足 i < j 的下标 i 中&#xff0c;有几个 hours[i]…

服务器硬件的基础知识

引言 服务器是现代数据中心和企业IT基础设施的核心组成部分。了解服务器硬件的基本知识不仅有助于选择和维护服务器&#xff0c;还能提高系统性能和可靠性。本文将详细介绍服务器硬件的各个方面&#xff0c;包括处理器、内存、存储、网络、散热和电源等&#xff0c;帮助读者全…

数据库系统概论、数据管理的三种方式

一、数据库系统概论 数据库系统管理数据的的方式是用数据库来组织和存储数据&#xff0c;利用数据库管理系统&#xff0c;在操作系统的支持下&#xff0c;统一管理和控制存储在磁盘上的数据库&#xff0c;各类用户通过不同的方式&#xff0c;借助于数据库管理系统&#xff08;…

Android简单登录界面布局设计

<ImageView android:id“id/yxlg” android:layout_marginTop“12dp” android:layout_marginLeft“80dp” android:layout_width“30dp” android:layout_height“30dp” android:background“drawable/net” /> <TextView android:paddingTop“5dp” andr…

【面试干货】HashSet 和 TreeSet 的区别

【面试干货】HashSet 和 TreeSet 的区别 1、实现方式HashSetTreeSet 2、性能添加、删除和查找操作的时间复杂度HashSetTreeSet 3、元素唯一性4、迭代顺序HashSetTreeSet 5、使用场景HashSetTreeSet 6、示例代码 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不…

fastapi+vue3+primeflex前后端分离开发项目第一个程序

安装axios axios是用来请求后端接口的。 https://www.axios-http.cn/docs/intro pnpm 是一个前端的包管理工具&#xff0c;当我们需要给前端项目添加新的依赖的时候&#xff0c;就可以使用pnpm install 命令进行安装。 pnpm install axios安装 primeflex primeflex是一个cs…

MySQL之复制(十二)

复制 复制的问题和解决方案 未定义的服务器ID 如果没有在my.cnf里面定义服务器ID,可以通过CHANGE MASTER TO 来设置备库&#xff0c;但却无法启动复制。 mysql>START SLAVE; ERROR 1200(HY000):The server is not configured as slave;fix in config file or with CHANG…

【shell脚本速成】mysql备份脚本

文章目录 案例需求脚本应用场景&#xff1a;解决问题脚本思路实现代码 &#x1f308;你好呀&#xff01;我是 山顶风景独好 &#x1f388;欢迎踏入我的博客世界&#xff0c;能与您在此邂逅&#xff0c;真是缘分使然&#xff01;&#x1f60a; &#x1f338;愿您在此停留的每一刻…

ubuntu链接mysql

C链接mysql 报错 sudo apt-get update sudo apt-get install libmysqlclient-dev 指令编译 g -o mysql_example mysql_example.cpp -I/usr/include/mysql -lmysqlclient g mysql_test.cpp mysql_config --cflags --libs 安装mysql sudo apt updatesudo apt install mysql-…

2024各省自考报名时间汇总❗所需材料❗

天津&#xff1a;5月27日-5月31日&#xff08;已结束&#xff09; 河北&#xff1a;6月10日~6月15日&#xff08;已结束&#xff09; 贵州&#xff1a;6月17日~26日 山东&#xff1a;6月18日~6月24日 江西&#xff1a;6月26日-7月7日&#xff08;6月下旬&#xff09; 浙江&…

pytest测试框架pytest-xdist插件并发执行测试用例

Pytest提供了丰富的插件来扩展其功能&#xff0c;本章介绍下插件pytest-xdist&#xff0c;主要是提供并行测试、分布式测试、循环测试等功能&#xff0c;可以加快测试速度。 pytest-xdist官方显示没有严格的python和pytest版本限制。 pytest-xdist安装 使用pip命令安装: pip…