Python中的数据结构:五彩斑斓的糖果盒

在Python编程的世界里,数据结构就像是一个个五彩斑斓的糖果盒,每一种糖果都有其独特的味道和形状。这些多姿多彩,形状和味道各异的糖果盒子包括了:List(列表)、Tuple(元组)、Dictionary(字典)和Set(集合)。只有充分了解每种糖果的特性及何时品尝最佳,才是制作美味佳肴的关键。现在,就让我们一起打开这个充满奇幻的数据结构糖果盒,开始一场探索这些有趣糖果盒的奇妙之旅吧!

首先,让我们的脚步停留在糖果盒中的第一种特殊糖果——List。List这个小家伙就像是一个魔法糖果袋,它的大小可以随时变化,仿佛拥有了伸缩自如的超能力。你可以随意往里面添加、删除或者修改糖果,就像是一个充满惊喜的宝盒。比如,你有一个糖果清单,买了新的糖果就放进去,不再喜欢的糖果就拿出来,简直方便得不要不要的!在Python的世界里,我们这样创建一个List糖果盒:mylist = [1, 2, 3]。看,是不是简单又有趣?

接下来,我们来到了Tuple糖果盒前。Tuple和List有些相似,但它是一个守规矩的家伙。一旦创建了Tuple,就不能修改它的大小或内容,就像是一个密封的盒子。这种特性让Tuple成为了一个很好的数据存储选择,特别是当你需要确保数据不会被意外修改的时候。创建一个Tuple也很简单:mytuple = (1, 2, 3)。

现在,让我们走进Dictionary糖果盒的领地。Dictionary是一个喜欢配对的家伙,它由键(key)和值(value)组成。每个糖果都有一个独特的名字(键),而这个名字对应的就是糖果本身(值)。就像在电话簿中查找某个人的名字一样,我们可以快速找到Dictionary中的某个键对应的值。在Python中,我们这样创建一个Dictionary:mydict = {'Alice': 123, 'Bob': 456}。有了Dictionary,我们可以快速查找到某个键对应的值,非常方便。

最终,我们抵达了Set糖果的奇幻屋。Set糖果与众不同,每一颗都独一无二,宛如一个收藏家的梦寐以求的藏品陈列。当你希望从一大堆糖果中挑出那些独一无二的口味时,Set糖果就是你的完美助手。在Python的世界里,创建一盒Set糖果非常简单:myset = {1, 2, 3}。

在我们的故事中,List糖果盒、Tuple糖果盒、Dictionary糖果盒和Set糖果盒都是Python世界里的超级英雄,它们各自拥有独特的超能力,帮助我们解决各种编程难题。现在,你已经认识了这四种糖果盒,不妨去Python的世界里,和它们一起展开一场精彩的冒险吧!

最后给大家详细梳理一下Python中的数据结构(非常重要,建议收藏哦):


一、List(列表)

Python中的列表(List)是一种有序的集合,可以随时添加和删除其中的元素。以下是一些常用的列表操作:

1. 创建列表:使用方括号`[]`创建一个空列表,或者在方括号内添加元素来创建一个包含元素的列表。

empty_list = []
fruits = ['apple', 'banana', 'cherry']

2. 访问列表元素:通过索引访问列表中的元素,索引从0开始。

first_fruit = fruits[0]  # 'apple'
second_fruit = fruits[1]  # 'banana'

3. 修改列表元素:通过索引赋值来修改列表中的元素。

fruits[0] = 'orange'  # 将第一个元素改为'orange'

4. 添加元素:使用`append()`方法在列表末尾添加元素,或者使用`insert()`方法在指定位置插入元素。

fruits.append('grape')  # 在列表末尾添加'grape'
fruits.insert(1, 'kiwi')  # 在索引1处插入'kiwi'

5. 删除元素:使用`del`关键字删除指定索引的元素,或者使用`remove()`方法删除指定的元素。

del fruits[0]  # 删除第一个元素
fruits.remove('banana')  # 删除'banana'

6. 列表切片:使用切片操作符`:`获取列表的一部分。

sub_list = fruits[1:3]  # 获取索引1到2的元素,不包括索引3的元素

7. 列表长度:使用`len()`函数获取列表的长度。

length = len(fruits)  # 获取列表的长度

8. 列表排序:使用`sort()`方法对列表进行排序,或者使用`sorted()`函数返回一个新的排序后的列表。

fruits.sort()  # 对原列表进行排序
sorted_fruits = sorted(fruits)  # 返回一个新的排序后的列表

9. 列表遍历:使用`for`循环遍历列表中的元素。

for fruit in fruits:print(fruit)

10. 列表推导式:使用简洁的语法快速生成列表。

squares = [x**2 for x in range(1, 6)]  # 生成一个包含1到5的平方数的列表

二、Tuple(元组)

Python中的元组(Tuple)是一种不可变的序列类型,用于存储一组有序的数据。元组的元素可以是任意类型,包括数字、字符串、列表等。元组的创建很简单,只需将元素放在圆括号内即可。例如:

my_tuple = (1, 2, 3)

元组的主要特点如下:

1. 不可变性:元组一旦创建,其内容就不能被修改。这意味着我们不能添加、删除或更改元组中的元素。

2. 有序性:元组中的元素是有序的,可以通过索引访问。

3. 可重复性:元组可以包含重复的元素。

4. 支持嵌套:元组可以包含其他元组作为其元素。

5. 支持解包:可以将元组的元素分配给多个变量。

以下是一些常用的元组操作:

1. 访问元素:通过索引访问元组中的元素。

my_tuple = (1, 2, 3)
print(my_tuple[0])  # 输出:1

2. 切片:使用切片操作符获取元组的一部分。

my_tuple = (1, 2, 3, 4, 5)
print(my_tuple[1:4])  # 输出:(2, 3, 4)

3. 遍历元素:使用for循环遍历元组中的所有元素。

my_tuple = (1, 2, 3)
for item in my_tuple:print(item)

4. 解包:将元组的元素分配给多个变量。

my_tuple = (1, 2, 3)
a, b, c = my_tuple
print(a, b, c)  # 输出:1 2 3

5. 计算长度:使用len()函数获取元组的长度。

my_tuple = (1, 2, 3)
print(len(my_tuple))  # 输出:3

6. 连接元组:使用+运算符连接两个元组。

tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
combined_tuple = tuple1 + tuple2
print(combined_tuple)  # 输出:(1, 2, 3, 4, 5, 6)

7. 检查元素是否存在:使用in关键字检查元素是否在元组中。

my_tuple = (1, 2, 3)
print(3 in my_tuple)  # 输出:True

三、Dictionary(字典)

Python中的字典(Dictionary)是一种可变的、无序的、键值对集合。字典中的键必须是唯一的,而值可以是任意类型的数据(数字、字符串、列表、另一个字典等)。

以下是一些常见的字典操作:

1. 创建字典:使用大括号 `{}` 或 `dict()` 函数创建一个空字典,或者使用键值对初始化字典。

# 使用大括号创建字典
my_dict = {'key1': 'value1', 'key2': 'value2'}
# 使用dict()函数创建字典
my_dict = dict(key1='value1', key2='value2')

2. 访问字典中的值:通过键来访问字典中的值。

value = my_dict['key1']

3. 修改字典:可以通过键来更新字典中的值。

my_dict['key1'] = 'new_value1'

4. 添加键值对:直接通过新的键来添加键值对。

my_dict['key3'] = 'value3'

5. 删除键值对:使用 `del` 关键字删除指定的键值对。

del my_dict['key1']

6. 检查键是否存在:使用 `in` 关键字检查字典中是否存在某个键。

if 'key1' in my_dict:print("Key exists")
else:print("Key does not exist")

7. 获取所有键和值:使用 `keys()` 和 `values()` 方法分别获取字典中的所有键和值。

keys = my_dict.keys()
values = my_dict.values()

8. 遍历字典:可以使用 `items()` 方法遍历字典中的键值对。

for key, value in my_dict.items():print(f"{key}: {value}")

总结:Python字典是一种非常有用的数据结构,可以用来存储和检索键值对。它提供了许多内置方法来操作字典,如添加、删除、查找和遍历元素。

四、Set(集合)

Python中的集合(Set)是一个无序的、不重复的元素序列。它的主要用途包括成员检测和消除重复元素。集合对象还支持数学运算,如并集、交集、差集和对称差分。

以下是一些常用的集合操作及其代码示例:

1. 创建集合:使用`set()`函数或大括号`{}`创建一个空集合,或者将一个列表或其他可迭代对象转换为集合。

empty_set = set()
numbers = [1, 2, 3, 4, 5]
number_set = set(numbers)

2. 添加元素:使用`add()`方法向集合中添加单个元素。

my_set = {1, 2, 3}
my_set.add(4)

3. 删除元素:使用`remove()`方法删除集合中的指定元素,如果元素不存在则抛出KeyError异常。使用`discard()`方法删除元素,如果元素不存在则不抛出异常。

my_set = {1, 2, 3}
my_set.remove(2)
my_set.discard(3)

4. 集合运算:可以使用集合的方法进行数学运算,如并集、交集、差集和对称差分。

A = {1, 2, 3}
B = {3, 4, 5}
# 并集
union_set = A.union(B)
# 交集
intersection_set = A.intersection(B)
# 差集
difference_set = A.difference(B)
# 对称差分
symmetric_difference_set = A.symmetric_difference(B)

5. 检查子集和超集:使用`issubset()`和`issuperset()`方法检查一个集合是否是另一个集合的子集或超集。

A = {1, 2, 3}
B = {1, 2}
C = {1, 2, 3, 4}
print(B.issubset(A))  # True
print(A.issuperset(B))  # True
print(A.issubset(C))  # False

6. 清空集合:使用`clear()`方法清空集合中的所有元素。

my_set = {1, 2, 3}
my_set.clear()

7. 不可变性:集合本身是不可变的,但可以包含可变类型的元素,如列表。然而,一旦创建了集合,就不能更改其内容。

my_set = {[1, 2], [3, 4]}  # 错误,因为列表是可变的

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

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

相关文章

如何保证数据库和redis的数据一致性

1、简介 在客户端请求数据时,如果能在缓存中命中数据,那就查询缓存,不用在去查询数据库,从而减轻数据库的压力,提高服务器的性能。 2、问题如何保证两者的一致性 先更新数据库在删除缓存 难点:如何保证…

微信小程序,订阅消息

微信小程序,订阅消息,完整流程 1.选择需要的模版 2.前端调用订阅消息 注:tmplIds:模板ID模版id,这里也可以选多个 wx.requestSubscribeMessage({tmplIds: [7UezzOrfJg_NIYdE1p*******],success (res) { console.log(res);wx.g…

一款简单的音频剪辑工具

Hello,大家好呀,我是努力搬砖的小画。 今天小画给大伙分享一款强大的音频剪辑工具--【剪画】,无需下载就能使用,支持对MP3、M4A、AAC等多种格式文件进行剪辑、分割、拼接、混音、变声、淡入淡出、音频格式转换、视频转音频、消除…

Hive 函数

分类 Hive 的函数分为两大类:内置函数(Built-in-Functions)、用户自定义函数(User-Defined-Functions);内置函数可分为:数值类型函数、日期类型函数、字符串类型函数、集合函数等;用…

基于粒子滤波和帧差法的目标跟踪matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 帧差法 4.2 粒子滤波 4.3 粒子滤波与帧差法的结合 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 原重采样方法: 改进重采样方法: 2.算法…

1.30、基于卷积神经网络的手写数字旋转角度预测(matlab)

1、卷积神经网络的手写数字旋转角度预测原理及流程 基于卷积神经网络的手写数字旋转角度预测是一个常见的计算机视觉问题。在这种情况下,我们可以通过构建一个卷积神经网络(Convolutional Neural Network,CNN)来实现该任务。以下…

铁威马教程丨如何收集NAS的日志

适用版本: 适用于TOS 5.0.xxx、TOS5.1.xxx版本。 适用机型: TNAS型号(除F2-210、F4-210) 故障现象: 当TNAS宕机导致网页不可访问且PC无法搜索到该设备时,重启后TOS网页的系统报告缺失相关日志,不利于异常…

第一百六十八节 Java IO教程 - Java Zip文件

Java IO教程 - Java Zip文件 Java对ZIP文件格式有直接支持。通常,我们将使用java.util.zip包中的以下四个类来处理ZIP文件格式: ZipEntryZipInputStreamZipOutputStreamZipFile ZipEntry对象表示ZIP文件格式的归档文件中的条目。 zip条目可以是压缩的…

大部分公司都是草台班子,甚至更水

我第一份实习是在一家咨询公司,我以为我们能够给我们的客户提供极具商业价值的战略指导,但其实开始干活了之后,发现我们就是PPT和调研报告的搬运工。后来我去了一家互联网大厂,我以为我的身边全都是逻辑超强的技术和产品大佬&…

先“精益”,还是先“信息化”

在当今这个快速变化、竞争激烈的制造业时代,工厂的高效运营与持续创新成为了企业脱颖而出的关键。而工厂精益管理与信息化系统,正是这两把推动企业转型升级的利器,它们相辅相成。 精益管理,作为一种以消除浪费、提升价值为核心的…

[ACM独立出版] 2024年虚拟现实、图像和信号处理国际学术会议(VRISP 2024,8月2日-4)

2024年虚拟现实、图像和信号处理国际学术会议(VRISP 2024)将于2024年8月2-4日在中国厦门召开。 VRISP 2024将围绕“虚拟现实、图像和信号处理”的最新研究领域,为来自国内外高等院校、科学研究所、企事业单位的专家、教授、学者、工程师等提供…

【Leetcode】二十一、前缀树 + 词典中最长的单词

文章目录 1、背景2、前缀树Trie3、leetcode208:实现Trie4、leetcode720:词典中最长的单词 1、背景 如上,以浏览器搜索时的自动匹配为例: 如果把所有搜索关键字放一个数组里,则:插入、搜索一个词条时&#x…

SEO:6个避免被搜索引擎惩罚的策略-华媒舍

在当今数字时代,搜索引擎成为了绝大多数人获取信息和产品的首选工具。为了在搜索结果中获得良好的排名,许多网站采用了各种优化策略。有些策略可能会适得其反,引发搜索引擎的惩罚。以下是彭博社发稿推广的6个避免被搜索引擎惩罚的策略。 1. 内…

一文带你看懂SAP-HANA的基本架构与原理

注:本篇主要对SAP HANA做了总结与论述,如有错误欢迎读者提出并补充 创作不易,希望大家一键三连支持!!!♥♥♥ 创作不易,希望大家一键三连支持!!!♥♥♥ 创作不易,希望大家一键三连支持!!!♥♥♥ 目录 一. 背景引入1.1 硬件与数据库系统1.2 行业现状 …

AES Android IOS H5 加密方案

前景: 1、本项目原有功能RSA客户端对敏感信息进行加密 2、本次漏洞说是服务端返回值有敏感信息,需要密文返回 方案: 本次方案不算完美,还是有被劫持篡改的风险,但基本https证书认证加持,风险相对较小 …

Camera XTS 处理笔记

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 常用测试步骤(下面均以CTS为例) 打开终端,进入 cts 包 tools目录下执行 ./cts-tradefed 进入cts测试 :~/XTS/CTS/14…

永磁同步电机高性能控制算法(14)—— 有源阻尼电流环

1.前言 在之前的之后中已经发过一篇复矢量电流环和我们平时用的比较多的前馈补偿的电流环的对比,感觉复矢量电流环的效果还是挺明显的。 https://zhuanlan.zhihu.com/p/682880365https://zhuanlan.zhihu.com/p/682880365 当时在看文献的时候,复矢量电…

AI算法17-贝叶斯岭回归算法Bayesian Ridge Regression | BRR

贝叶斯岭回归算法简介 贝叶斯岭回归(Bayesian Ridge Regression)是一种回归分析方法,它结合了岭回归(Ridge Regression)的正则化特性和贝叶斯统计的推断能力。这种方法在处理具有大量特征的数据集时特别有用&#xff…

13、Shell自动化运维编程基础

弋.目录 RHCE板块一、为什么学习和使用Shell编程二、Shell是什么1、shell起源2、查看当前系统支持的shell3、查看当前系统默认shell4、Shell 概念 三、Shell 程序设计语言1、Shell 也是一种脚本语言2、用途 四、如何学好shell1、熟练掌握shell编程基础知识2、建议 五、Shell脚本…

英伟达股票1拆10后,现在再买入是否为时已晚?

英伟达股票1拆10后,现在再买入是否为时已晚? 英伟达的股价在过去18个月里已经上涨了近800% 人工智能领域无疑是当下最受投资者关注的焦点之一,而这一领域的佼佼者--英伟达,也被一些华尔街投资机构和看好半导体、数据中心行业的专业…