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

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

列表和元组

列表是什么, 元组是什么

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

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.....它们内部可以再包含其他元素了(容器/集合类)

相关文章
|
26天前
|
IDE 数据挖掘 开发工具
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
36 7
|
8天前
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
22 14
|
10天前
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
27 10
|
21天前
|
XML JSON API
如何使用Python将字典转换为XML
本文介绍了如何使用Python中的`xml.etree.ElementTree`库将字典数据结构转换为XML格式。通过定义递归函数处理字典到XML元素的转换,生成符合标准的XML文档,适用于与旧系统交互或需支持复杂文档结构的场景。示例代码展示了将一个简单字典转换为XML的具体实现过程。
16 1
|
25天前
|
存储 索引 Python
Python 的基本语法
这些是 Python 的基本语法要素,掌握它们是学习和使用 Python 的基础。通过不断地实践和应用,你将能够更深入地理解和熟练运用这些语法知识,从而编写出高效、简洁的 Python 代码
52 5
|
27天前
|
数据处理 开发者 Python
Python中的列表推导式:简洁高效的数据处理
在编程世界中,效率和可读性是代码的两大支柱。Python语言以其独特的简洁性和强大的表达力,为开发者提供了众多优雅的解决方案,其中列表推导式便是一个闪耀的例子。本文将深入探讨列表推导式的使用场景、语法结构及其背后的执行逻辑,带你领略这一特性的魅力所在。
|
27天前
|
存储 Python
Python编程入门:理解基础语法与编写简单程序
本文旨在为初学者提供一个关于如何开始使用Python编程语言的指南。我们将从安装Python环境开始,逐步介绍变量、数据类型、控制结构、函数和模块等基本概念。通过实例演示和练习,读者将学会如何编写简单的Python程序,并了解如何解决常见的编程问题。文章最后将提供一些资源,以供进一步学习和实践。
32 1
|
1月前
|
开发者 Python
探索Python中的列表推导式:简洁而强大的工具
【10月更文挑战第41天】 在编程的世界中,效率与简洁是永恒的追求。本文将深入探讨Python编程语言中一个独特且强大的特性——列表推导式(List Comprehension)。我们将通过实际代码示例,展示如何利用这一工具简化代码、提升性能,并解决常见编程问题。无论你是初学者还是资深开发者,掌握列表推导式都将使你的Python之旅更加顺畅。
|
28天前
|
JavaScript 前端开发 算法
python中的列表生成式和生成器
欢迎来到瑞雨溪的博客,这里是一位热爱JavaScript和Vue的大一学生的天地。通过自学前端技术2年半,现正向全栈开发迈进。如果你从我的文章中受益,欢迎关注,我将持续更新高质量内容,你的支持是我前进的动力!🎉🎉🎉
23 0
|
6月前
|
存储 程序员 索引
Python学习之路 | Python基础语法(一)
Python学习之路 | Python基础语法(一)
50 1