标题:Python数据结构详解:列表、元组、字典和集合

news2024/9/23 23:27:47

文章目录

  • 🍀引言
  • 🍀列表(List):有序可变序列
    • 🍀特点
    • 🍀常见操作
  • 🍀元组(Tuple):有序不可变序列
    • 🍀特点
    • 🍀常见操作
  • 🍀字典(Dictionary):键值对映射
    • 🍀特点
    • 🍀常见操作
  • 🍀集合(Set):无序不重复元素的集合
    • 🍀特点
    • 🍀常见操作
  • 🍀小案例
    • 🍀功能要求
    • 🍀说明
  • 🍀总结

🍀引言

在Python编程中,数据结构是至关重要的。数据结构是组织和存储数据的方式,它直接影响了程序的性能和灵活性。本文将深入介绍Python中的四种常见数据结构:列表、元组、字典和集合,让你全面了解它们的特性、用途和操作方法。


🍀列表(List):有序可变序列

列表是Python中最基本的数据结构之一,它可以存储多个元素,这些元素可以是不同类型的数据。以下是关于列表的重要信息:

🍀特点

有序:列表中的元素按照它们添加的顺序存储,并可以通过索引访问。
可变:你可以添加、删除和修改列表中的元素。
my_list = [1, 2, 3, 'hello', [4, 5]]

🍀常见操作

访问元素:使用索引来访问列表中的元素。
切片操作:获取列表的子集。
添加元素:使用append()、insert()等方法。
删除元素:使用remove()、pop()等方法。
修改元素:通过索引直接赋值。

🍀元组(Tuple):有序不可变序列

元组类似于列表,但与列表不同,元组的元素不可变。以下是关于元组的重要信息:

🍀特点

有序:元组中的元素按照它们添加的顺序存储,并可以通过索引访问。
不可变:元组一旦创建,其中的元素不能被修改。
my_tuple = (1, 2, 3, 'hello')

🍀常见操作

访问元素:使用索引来访问元组中的元素。
切片操作:获取元组的子集。

🍀字典(Dictionary):键值对映射

字典是一种无序的键值对集合,它可以通过键来快速查找值。以下是关于字典的重要信息:

🍀特点

无序:字典中的键值对没有固定的顺序。
键唯一:字典的键必须是唯一的。
可变:你可以添加、删除和修改字典中的键值对。
my_dict = {'name': 'Alice', 'age': 25, 'score': 90}

🍀常见操作

访问值:通过键来访问字典中的值。
添加/修改键值对:通过键直接赋值。
删除键值对:使用del关键字或pop()方法。

🍀集合(Set):无序不重复元素的集合

集合是一种无序的数据集合,其中的元素不重复。以下是关于集合的重要信息:

🍀特点

无序:集合中的元素没有固定的顺序。
唯一:集合中的元素不重复。
可变:你可以添加、删除集合中的元素。
my_set = {1, 2, 3, 3, 4, 5}

🍀常见操作

添加元素:使用add()方法。
删除元素:使用remove()或discard()方法。

🍀小案例

在本案例中,我们将创建一个简单的任务分配系统,使用字典来存储团队成员的任务列表。每个成员可以拥有多个任务,而每个任务都有一个状态。我们将应用之前介绍的列表、字典和基本的控制流程来实现这个案例。

🍀功能要求

添加团队成员和任务。
显示团队成员及其任务。
根据任务状态显示任务列表。
def add_member(team, member_name):
    team[member_name] = []

def add_task(team, member_name, task_name):
    if member_name in team:
        team[member_name].append({"task": task_name, "status": "未完成"})
        print(f"任务'{task_name}'已添加给成员'{member_name}'。")
    else:
        print(f"成员'{member_name}'不存在。")

def display_team(team):
    print("团队成员及任务:")
    for member, tasks in team.items():
        print(f"{member}:")
        for task in tasks:
            print(f"  - 任务: {task['task']}, 状态: {task['status']}")

def display_tasks_by_status(team, status):
    print(f"状态为'{status}'的任务:")
    for member, tasks in team.items():
        for task in tasks:
            if task['status'] == status:
                print(f"{member}: 任务'{task['task']}'")

def main():
    team = {}
    while True:
        print("\n任务分配系统")
        print("1. 添加团队成员")
        print("2. 添加任务")
        print("3. 显示团队成员及任务")
        print("4. 显示未完成任务")
        print("5. 显示已完成任务")
        print("6. 退出")
        choice = input("请选择操作:")
        
        if choice == '1':
            member_name = input("请输入成员姓名: ")
            add_member(team, member_name)
        elif choice == '2':
            member_name = input("请输入成员姓名: ")
            task_name = input("请输入任务名称: ")
            add_task(team, member_name, task_name)
        elif choice == '3':
            display_team(team)
        elif choice == '4':
            display_tasks_by_status(team, "未完成")
        elif choice == '5':
            display_tasks_by_status(team, "已完成")
        elif choice == '6':
            print("感谢使用任务分配系统!")
            break
        else:
            print("无效的选择,请重新输入。")


if __name__ == "__main__":
    main()

运行结果如下
在这里插入图片描述
运行结果如下
在这里插入图片描述
运行结果如下
在这里插入图片描述
运行结果如下
在这里插入图片描述
运行结果如下
在这里插入图片描述
运行结果如下
在这里插入图片描述

🍀说明

这个案例实现了一个简单的任务分配系统,你可以根据提示选择不同的操作。通过输入和输出,你可以添加团队成员、为成员分配任务,显示团队成员及其任务,以及根据任务状态筛选任务列表。
在运行案例时,你可以输入团队成员的姓名、任务名称以及任务状态。然后,你可以选择显示团队成员和任务、显示未完成任务、显示已完成任务,或者退出系统。

通过这个案例,你将能够更好地理解列表、字典以及控制流程在实际项目中的应用,同时也加深对Python数据结构的理解。你可以根据这个案例的基础上进行拓展,添加更多功能,如任务完成状态的更改、任务截止日期等。

🍀总结

列表、元组、字典和集合是Python中常见的数据结构,每种数据结构都有其独特的特点和适用场景。理解这些数据结构的基本特性以及如何操作它们,将为你在Python编程中提供强大的工具,帮助你更高效地组织和处理数据。无论是存储数据、构建数据集,还是进行数据处理和分析,选择合适的数据结构都是编程中的重要一环。

请添加图片描述

挑战与创造都是很痛苦的,但是很充实。

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

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

相关文章

18-组件化开发 根组件

组件化开发 & 根组件: 1. 组件化:一个页面可以拆分成一个个组件,每个组件有着自己独立的结构、样式、行为. 好处:便于维护,利于复用->提升开发效率 组件分类: 普通组件 , 根组件 2. 根组件:整个应用最上层的组件,包裹所有普通小组件…

Smartbi:大模型+ABI在企业数字化浪潮中“推波助澜”?

围绕着大模型进行开发的范式正在形成。 2023年以来,ChatGPT让各界认识到通用大模型的力量。随之而来的,是一场属于所有行业的科技盛宴,一个个行业大模型涌现,几乎所有科技企业都在计划或已经发布了自己的大语言模型(L…

ACDU-数据库技术揭秘及应用实践

ACDU-数据库技术揭秘及应用实践 会议时间:2023-08-19 13:30 ~ 17:30 会议地点:杭州西溪万怡酒店 活动主题:本活动由中国数据库联盟组织,并汇集了数据库领域知名人士,一起探讨了数据库前沿技术的应用。 活动…

记录:win10物理机ping不通虚拟机上的docker子网(已解决)

【说明】 windows10:已关闭防火墙 linux发行版本:centos7.9(已禁用SElinux、已关闭防火墙) 虚拟机软件:VMware Workstation 17 虚拟机网络模式:NAT模式 docker版本:20.4.5 docker网络模式…

当众讲话与演讲口才沙龙活动策划方案

活动名称:当众讲话与演讲口才沙龙 活动目的: 当众讲话与演讲口才沙龙旨在提升参与者的演讲口才能力,培养自信心和表达能力,促进交流与分享。通过举办此活动,我们希望能够帮助参与者克服公众演讲的恐惧,提…

Visual studio的安装教程(最新最详细)新手小白必备

目录 简介 1、Visual Studio下载 2、配置 3、新建项目 4.新建文件 5、选择C文件(cpp) ,命名,选择位置即可 ​编辑 简介 Visual Studio 集成开发环境是一种创新启动板,可用于编辑、调试并生成代码,…

PatchMatchNet 在线查看训练曲线、多条曲线显示在一张图上、多次训练曲线放在一张图上对比

文章目录 1准备工作1.1 可视化工具-Tensorboard调用1.2 查看训练文件2 Tensorboard在线查看训练曲线2.1 查看训练曲线 平滑度调节 SCALARS 训练曲线3 将多条曲线叠加在一张图上显示4 多次训练曲线 放在一张图上对比1准备工作 1.1 可视化工具-Tensorboard调用 Tensorboard模块…

接口测试 —— Jmeter 参数加密实现

Jmeter有两种方法可以实现算法加密 1、使用__digest自带函数 参数说明: Digest algorithm:算法摘要,可输入值:MD2、MD5、SHA-1、SHA-224、SHA-256、SHA-384、SHA-512 String to be hashed:要加密的数据 Salt to be…

操作系统_内存管理(二)

目录​​​​​​​ 2. 虚拟内存管理 2.1 虚拟内存的基本概念 2.1.1 传统存储管理方式的特征 2.1.2 局部性原理 2.1.3 虚拟存储器的定义和特征 2.1.4 虚拟内存技术的实现 2.2 请求分页管理方式 2.2.1 页表机制 2.2.2 缺页中断机构 2.2.3 地址变换机构 2.3 页框分配…

Aurix TC3xx系列MCU ResourceM模块配置(多核资源分配)

文章目录 1 前言2 配置方法 >>返回总目录<< 1 前言 为减轻主核的负载率或者平衡各个核的资源分配&#xff0c;通常需要把一些MCU内部资源分配到从核上&#xff0c;在EB tresos工具中&#xff0c;通过ResourceM模块实现多核资源分配。 2 配置方法 ResourceMMaste…

Java基础知识小结(内部类、BigInteger、枚举、接口、重写重载和序列化)

一、Java内部类 1、内部类 在Java中&#xff0c;也可以嵌套类&#xff08;类中的类&#xff09;。嵌套类的目的是将属于同一类的类分组&#xff0c;这使代码更具可读性和可维护性。 要访问内部类&#xff0c;请创建外部类的对象&#xff0c;然后创建内部类的对象&#xff1a;…

Java基础知识题(一)

文章目录 前言 一 Java语言 1. Java为什么不直接实现Iterator接口&#xff0c;而是实现Iterable 2. 解释为什么Java被称作是“平台无关的编程语言”&#xff1f; 3. 请描述JDK和JRE的区别 &#xff1f; 4. 简述什么是值传递和引用传递&#xff1f;重点 5. 简述什么是迭…

智慧工地监管云平台源码 建筑施工一体化信息管理系统源码

智慧工地管理云平台系统是一种利用人工智能和物联网技术来监测和管理建筑工地的系统。它可以通过感知设备、数据处理和分析、智能控制等技术手段&#xff0c;实现对工地施工、设备状态、人员安全等方面的实时监控和管理。 智慧工地平台系统工作原理&#xff1a; 1、感知设备的…

读书笔记--数据治理的应用实践与展望

继延续上一篇文章&#xff0c;终于到数据治理这本书的收尾了&#xff0c;这段时间忙&#xff0c;一直没有及时更新这部分内容&#xff0c;本文主要讲述一些相对成熟的数据治理应用实践案例、数据治理的6大准备工作、6大误区和5个技术展望&#xff0c;希望对大家在开展数据治理工…

Cpp学习——list的模拟实现

目录 一&#xff0c;实现list所需要包含的三个类 二&#xff0c;三个类的实现 1.list_node 2.list类 3.iterator_list类 三&#xff0c;功能实现 1.list类里的push_back() 2.iterator类里的运算符重载 3&#xff0c;list类里面的功能函数 1.insert&#xff08;&#xff…

vue技术学习

vue快速入门 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>vue快速入门</title> </head> <body> <!--老师解读 1. div元素不是必须的&#xff0c;也可以是其它元素&#xff0…

【C++】做一个飞机空战小游戏(十)——子弹击落炮弹、炮弹与飞机相撞

[导读]本系列博文内容链接如下&#xff1a; 【C】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动【C】做一个飞机空战小游戏(三)——getch()函数控制任意造型飞机图标移动 【C】做一个飞…

回归预测 | MATLAB实现SA-SVM模拟退火算法优化支持向量机多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现SA-SVM模拟退火算法优化支持向量机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现SA-SVM模拟退火算法优化支持向量机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果一览基本…

【华为鸿蒙3.0/荣耀安卓12使用VMOS Pro的激活方式】

关于华为鸿蒙3.0/荣耀安卓12如何解除进程限制&#xff0c;这里提供以下教程供小伙伴们参考。 需要准备&#xff1a;电脑一台&#xff0c;数据线一根。 第一步&#xff1a;打开手机USB调试模式。 确保USB数据线已连接手机和电脑&#xff0c;打开手机“开发者选项”&#xff0…

Monitor.Analog产品老化试验软件概要设计

Monitor.Analog产品老化试验软件概要设计&#xff1a; 1. 引言&#xff1a; 模拟量采集软件的目标是实现对模拟量信号的采集、处理和展示。该软件旨在提供一个用户友好的界面&#xff0c;允许用户配置采集参数、实时监测模拟量信号&#xff0c;并提供数据分析和导出功能。 2. 功…