【Python】6. 基础语法(4) -- 列表+元组+字典篇

news/2024/7/27 21:45:54/文章来源:https://blog.csdn.net/weixin_60915103/article/details/136539786

列表和元组

列表是什么, 元组是什么

编程中, 经常需要使用变量, 来保存/表示数据.
如果代码中需要表示的数据个数比较少, 我们直接创建多个变量即可.

num1 = 10
num2 = 20
num3 = 30
......

但是有的时候, 代码中需要表示的数据特别多, 甚至也不知道要表示多少个数据. 这个时候, 就需要用到列表.
列表是一种让程序猿在代码中批量表示/保存数据的方式(就类似于其他编程语言中的“数组")

就像我们去超市买辣条, 如果就只是买一两根辣条, 那咱们直接拿着辣条就走了.
但是如果一次买个十根八根的, 这个时候用手拿就不好拿, 超市老板就会给我们个袋子.
这个袋子, 就相当于 列表

元组和列表相比, 是非常相似的, 只是列表中放哪些元素可以修改调整, 元组中放的元素是创建元组的时候就设定好的, 不能修改调整
列表是可变的:创建好了之后,随时能改
元组是不可变的:创建好了之后,改不了.要想改,只能丢弃旧的,搞个新的

列表就是买散装辣条, 装好了袋子之后, 随时可以把袋子打开, 再往里多加辣条或者拿出去一些辣条.
元组就是买包装辣条, 厂家生产好了辣条之后, 一包就是固定的这么多, 不能变动了.
在这里插入图片描述
C++/Java里面要求一个数组里只能存相同类型的变量
Python里的列表则无限制,放啥类型都可以!!

列表

创建列表

创建列表主要有两种方式. [ ] 表示一个空的列表
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

访问下标

可以通过下标访问操作符 [ ] 来获取到列表中的任意元素.
我们把 [ ] 中填写的数字, 称为 下标 或者 索引 .
在这里插入图片描述
在这里插入图片描述

切片操作

通过下标操作是一次取出里面第一个元素.
通过切片, 则是一次取出一组连续的元素, 相当于得到一个子列表

使用 [ : ] 的方式进行切片操作.

在这里插入图片描述

切片操作中可以省略前后边界

在这里插入图片描述

切片操作还可以指定 “步长” , 也就是 “每访问一个元素后, 下标自增几步”

在这里插入图片描述
如果切片中填写的数字越界了, 不会有负面效果. 只会尽可能的把满足条件的元素过去到.
在这里插入图片描述

遍历列表元素

在这里插入图片描述
在这里插入图片描述

新增元素

使用 append 方法, 向列表末尾插入一个元素(尾插).
在这里插入图片描述
使用 insert 方法, 向任意位置插入一个元素
insert 第一个参数表示要插入元素的下标.

在这里插入图片描述
在这里插入图片描述

查找元素

使用 in 操作符, 判定元素是否在列表中存在. 返回值是布尔类型.

alist = [1, 2, 3, 4]
print(2 in alist)
print(10 in alist)

使用 index 方法, 查找元素在列表中的下标. 返回值是一个整数. 如果元素不存在, 则会抛出异常.

alist = [1, 2, 3, 4]
print(alist.index(2))
print(alist.index(10))

在这里插入图片描述

删除元素

使用 pop 方法删除最末尾元素
在这里插入图片描述
pop 也能按照下标来删除元素
在这里插入图片描述
使用 remove 方法, 按照值删除元素.
在这里插入图片描述

连接列表

使用 + 能够把两个列表拼接在一起.

此处的 + 结果会生成一个新的列表. 而不会影响到旧列表的内容.

在这里插入图片描述
使用 extend 方法, 相当于把一个列表拼接到另一个列表的后面.

a.extend(b) , 是把 b 中的内容拼接到 a 的末尾. 不会修改 b, 但是会修改 a.

在这里插入图片描述
None非常类似于C里面的NULL,或者Java里的 null
在这里插入图片描述

元组

元组的功能和列表相比, 基本是一致的.
元组使用 ( ) 来表示.
在这里插入图片描述
元组不能修改里面的元素, 列表则可以修改里面的元素
在这里插入图片描述
在这里插入图片描述
另外, 元组在 Python 中很多时候是默认的集合类型. 例如, 当一个函数返回多个值的时候.
在这里插入图片描述
此处的 result 的类型, 其实是元组.

问题来了, 既然已经有了列表, 为啥还需要有元组?

  1. 元组相比于列表来说, 优势有两方面:
    协同开发的时候,一个程序猿A实现一些功能,提供给程序猿B来使用
    A写好一些函数,让B去调用(函数肯定要传参)
    B传完参数后,A的函数里面是否会将参数的内容进行修改呢?
    如果使用的元组作为参数,就可以避免这样的纠结
  2. 后面学习的字典, 是一个键值对结构.
    要求字典的键必须是 “可hash对象” (字典本质上也是一个hash表).
    而一个可hash对象的前提就是不可变. 因此元组可以作为字典的键, 但是列表不行.

小结

列表和元组都是日常开发最常用到的类型. 最核心的操作就是根据 [ ] 来按下标操作.
在需要表示一个 “序列” 的场景下, 就可以考虑使用列表和元组.
如果元素不需要改变, 则优先考虑元组.
如果元素需要改变, 则优先考虑列表.

字典

字典是什么

字典是一种存储 键值对 的结构.
那么什么是键值对呢? — 这是计算机/生活中一个非常广泛使用的概念.
将 键(key) 和 值(value) 进行一个一对一的映射, 然后就可以根据键, 快速找到值.

举个栗子, 学校的每个同学, 都会有一个唯一的学号.
知道了学号, 就能确定这个同学.
此处 “学号” 就是 “键”, 这个 “同学” 就是 “值”

在Python的字典中,可以同时包含很多个键值对.同时要求这些键,不能重复!

创建字典

创建一个空的字典. 使用 { } 表示字典.
可以在创建的同时指定初始值
键值对之间使用 , 分割, 键和值之间使用 : 分割. (冒号后面推荐加一个空格).
使用 print 来打印字典内容
在这里插入图片描述在这里插入图片描述

查找 key

使用 in 可以判定 key 是否在 字典 中存在. 返回布尔值.
在这里插入图片描述
使用 [ ] 通过类似于取下标的方式, 获取到元素的值. 只不过此处的 “下标” 是 key. (可能是整数, 也可能是字符串等其他类型).
在这里插入图片描述
在这里插入图片描述

新增/修改元素

在这里插入图片描述

删除元素

使用 pop 方法根据 key 删除对应的键值对.
在这里插入图片描述

遍历字典元素

在这里插入图片描述
遍历指的就是能够把一个可迭代对象,将其中包含的元素依次取出,并进行一些操作(整个过程要求不重不漏)
字典被设计出来的初衷,不是为了实现遍历,而是为了增删改查.
字典是哈希表,进行增删改查操作,效率都非常高
而字典的遍历则效率就要差一些.
哈希表这个结构 设计的非常巧妙
能够以“常数级”时间复杂度来完成增删改查
(如果学了一场数据结构,还不知道哈希表,只能说明数据结构并没有掌握)
数据结构中最最重要的就是哈希表,没有之一(工作中最常用到的数据结构,也是面试中非常高频的问题)
无论字典中有多少元素 新增,修改,查找,删除操作都是固定时间,不会因为元素过多,操作速度下降(都是常数级)
字典中的key要求不能重复

取出所有 key 和 value

在这里插入图片描述

在C++或者Java中,哈希表里面的键值对存储的顺序,是无序的
但是在Python 中不一样 Python 中做了特殊处理能够保证遍历出来的顺序,就是和插入的顺序一致的
Python中的字典并不是单纯的哈希表

合法的 key 类型

不是所有的类型都可以作为字典的 key.
字典本质上是一个 哈希表, 哈希表的 key 要求是 “可哈希的”, 也就是可以计算出一个哈希值.
可以使用 hash 函数计算某个对象的哈希值.
但凡能够计算出哈希值的类型, 都可以作为字典的 key.

在这里插入图片描述
不可变的对象,一般就是可哈希的.
可变的对象,一般就是不可哈希的

小结

字典也是一个常用的结构. 字典的所有操作都是围绕 key 来展开的.
需要表示 “键值对映射” 这种场景时就可以考虑使用字典.
字典,列表,元组Python 中非常常用的内置类型 相比于int, str, float…它们内部可以再包含其他元素了(容器/集合类)

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

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

相关文章

qtvs2022工程cmakelist.txt添加QCharts模块

find_package(QT NAMES Qt5 COMPONENTS Core Gui Widgets OpenGL Concurrent Charts Sql Network REQUIRED) find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Gui Widgets OpenGL Charts Concurrent Sql Network REQUIRED)这里find_package只是设置搜索路径,为…

阿里云服务器怎么使用?3分钟搭建网站教程2024新版

使用阿里云服务器快速搭建网站教程,先为云服务器安装宝塔面板,然后在宝塔面板上新建站点,阿里云服务器网aliyunfuwuqi.com以搭建WordPress网站博客为例,来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流…

【代码随想录算法训练营Day33】1005.K次取反后最大化的数组和;134.加油站;135.分发糖果

❇️Day 33 第八章 贪心算法 part03 ✴️今日任务 1005.K次取反后最大化的数组和134.加油站135.分发糖果 ❇️1005. K次取反后最大化的数组和 本题简单一些,估计大家不用想着贪心 ,用自己直觉也会有思路。题目链接:https://leetcode.cn/pr…

如何在Windows上使用Docker,搭建一款实用的个人IT工具箱It- Tools

文章目录 1. 使用Docker本地部署it-tools2. 本地访问it-tools3. 安装cpolar内网穿透4. 固定it-tools公网地址 本篇文章将介绍如何在Windows上使用Docker本地部署IT- Tools,并且同样可以结合cpolar实现公网访问。 在前一篇文章中我们讲解了如何在Linux中使用Docker搭…

从huggingface下载模型像本地加载但是UnicodeDecodeError

我自己是在Linux下出现了这个问题 原文:https://github.com/huggingface/transformers/issues/13674 The path for the AutoModel should be to a directory pointing to a pytorch_model.bin and to a config.json. Since you’re pointing to the .bin file dire…

全局渐变滚动条样式

效果如下&#xff1a; APP.vue<style> /* 整个滚动条 */ ::-webkit-scrollbar {width: 5px;height: 10px; } /* 滚动条上的滚动滑块 */ ::-webkit-scrollbar-thumb {background-color: #49b1f5;/* 关键代码 */background-image: -webkit-linear-gradient(45deg,rgba(255,…

Linux--搭建Zabbix监控系统

11.1 案例分析 要想实时地了解服务器的运行状况并且能在出现问题时及时解决&#xff0c;利用监控软件是一个很好的 途径。 Zabbix&#xff08;免费的&#xff09;是一个基于Web界面的企业级开源监控套件&#xff0c;提供分布式系统监控与网络监视功能。具备主机的性能监控。网络…

基于SpringBoot的中小型超市数据分析系统设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 系统开发相关技术 3 1.1 SpringBoot框架 3 1.1.1发展历程 3 1.1.2 什么是SpringBoot 3 1.1.3 SpringBoot特性 3 1.1.4 SpringBoot的优势 3 1.2 MyBatis框架 4 1.2.1框架简介 4 1.2.2框架特性 4 1.3 Java语言 5 1.3.1 Java语言简介 5 1.3.…

OpenAI-Sora学习手册

通过Sora看2024红利&#xff1a;文生视频&#xff0c;虽然AI不一定是风口&#xff0c;但一定是未来深入到生活工作&#xff0c;乃至思考的必备工具。 目录 Sora介绍 Sora基础介绍 Sora官方网址 Sora的价值 1.物理世界的交互 2.创意世界的绽放 3.多角色、更精准、更细节…

Sora,OpenAI带来的视觉革新

目录 1、Sora&#xff1a;不只是一个视频生成工具 2、从文本到视频的魔法之旅 3、技术革命&#xff1a;从文本到视频的华丽转变 4、应用范围&#xff1a;无限的可能性 5、好用的GPT网站 ⭐ 想象一下&#xff0c;如果你可以仅通过敲击键盘&#xff0c;就能让你的思维火花转…

Spark实战-基于Spark日志清洗与数据统计以及Zeppelin使用

Saprk-日志实战 一、用户行为日志 1.概念 用户每次访问网站时所有的行为日志(访问、浏览、搜索、点击)用户行为轨迹&#xff0c;流量日志2.原因 分析日志&#xff1a;网站页面访问量网站的粘性推荐3.生产渠道 (1)Nginx(2)Ajax4.日志内容 日志数据内容&#xff1a;1.访问的…

最新2024年阿里云服务器地域和可用区全球分布表,不只是中国

2024年最新阿里云服务器地域分布表&#xff0c;地域指数据中心所在的地理区域&#xff0c;通常按照数据中心所在的城市划分&#xff0c;例如华北2&#xff08;北京&#xff09;地域表示数据中心所在的城市是北京。阿里云地域分为四部分即中国、亚太其他国家、欧洲与美洲和中东&…

GIN与Echo:选择正确Go框架的指南

您是否在Go中构建Web应用&#xff1f;选择正确的框架至关重要&#xff01;GIN和Echo是两个热门选择&#xff0c;每个都有其优势和特点。本指南将详细介绍每个框架的特性、速度、社区热度以及它们各自擅长的项目类型。最后&#xff0c;您将能够为您的下一个Web项目选择完美的框架…

如何在Windows系统部署Jellyfin Server并实现公网访问内网影音文件

文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5. 结语 1. 前言 随着移动智能设备的普及&#xff0c;各种各样的使用需求也被开发出来&…

moi3D安装

下载文件双击文件 下一步 同意下一步 下一步 下一步 下一步 安装下一步 完成 破解 将如图中的文件复制到文件目录下 汉化 在目录中进入ui文件夹下 在安装包中找到如下的文件复制到ui目录下 在打开 另存为 另存为时改一下编码格式如图 打开软件 找到如图options进入…

C++:拷贝构造函数

1.概念 在现实生活中&#xff0c;可能存在一个与你一样的自己&#xff0c;我们称之为双胞胎。那在创建对象的时候&#xff0c;可否创建一个与已存在对象一模一样的新对象呢&#xff1f;答案是可以的&#xff0c;这就要通过拷贝构造函数来实现了。 拷贝构造函数&#xff1a;只有…

MindOpt优化器: 浅谈版本0.x和1.x之间API的差异

Mindopt 是一个优化求解器&#xff0c;如果它有两个主要版本——0.xx和1.x.x&#xff08;最新版本1.1.1&#xff09;&#xff0c;它们代表着软件开发的两个不同阶段。版本1.0.0表示软件的一个大的里程碑&#xff0c;代表着软件第一个正式的“成熟”发布版本&#xff0c;而0.25是…

【SpringBoot】多环境切换的灵活配置

文章目录 profile 的使用激活 profile 的方式命令行启动idea 中配置配置文件中激活 开发中最灵活的多环境配置创建四个配置主配置文件其他几个环境配置使用方式 配置文件拆分总结 在日常的开发中&#xff0c;一般都会分好几种环境&#xff0c;比如通常的 开发环境&#xff1a;一…

NTFS Disk by Omi NTFS for mac v1.1.4中文版

NTFS Disk by Omi NTFS for Mac&#xff1a;NTFS文件系统的无缝桥梁 软件下载&#xff1a;NTFS Disk by Omi NTFS for mac v1.1.4中文版 &#x1f310; 跨平台访问&#xff0c;文件无阻 NTFS Disk by Omi NTFS for Mac 为您的Mac提供了对NTFS文件系统的无缝访问。无论您是在Win…

FPGA-VGA成像原理与时序

什么是VGA: VGA, Video Graphics Array。即视频图形阵列,具有分辨率高、显示速率快、颜色丰富等优点。VGA接口不但是CRT显示设备的标准接口,同样也是LCD液晶显示设备的标准接口,具有广泛的应用范围。在FGPA中,常广泛用于图像处理等领域。 VGA 显示器成像原理 在 VGA 标准刚兴…