![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
第4章 列表、元组、字典、和集合
文章平均质量分 68
愿与你共信仰
这个作者很懒,什么都没留下…
展开
-
4.22 Python深拷贝和浅拷贝详解
对于浅拷贝(shallow copy)和深度拷贝(deep copy),本节并不打算一上来抛出它们的概念,而是先从它们的操作方法说起,通过代码来理解两者的不同。Python浅拷贝常见的浅拷贝的方法,是使用数据类型本身的构造器,比如下面两个例子:list1 = [1, 2, 3]list2 = list(list1)print(list2)print("list1==list2 ?",list1==list2)print("list1 is list2 ?",list1 is list2)se原创 2021-02-13 21:14:52 · 253 阅读 · 0 评论 -
4.21 深入底层了解Python字典和集合,一眼看穿他们的本质!
字典和集合是进行过性能高度优化的数据结构,特别是对于查找、添加和删除操作。本节将结合实例介绍它们在具体场景下的性能表现,以及与列表等其他数据结构的对比。例如,有一个存储产品信息(产品 ID、名称和价格)的列表,现在的需求是,借助某件产品的ID找出其价格。则实现代码如下:def find_product_price(products, product_id): for id, price in products: if id == product_id: return price原创 2021-02-13 21:14:36 · 473 阅读 · 1 评论 -
4.20 Python frozenset集合(set集合的不可变版本)
set 集合是可变序列,程序可以改变序列中的元素;frozenset 集合是不可变序列,程序不能改变序列中的元素。set 集合中所有能改变集合本身的方法,比如 remove()、discard()、add() 等,frozenset 都不支持;set 集合中不改变集合本身的方法,fronzenset 都支持。我们可以在交互式编程环境中输入dir(frozenset)来查看 frozenset 集合支持的方法:>>> dir(frozenset)['copy', 'difference原创 2021-02-13 21:14:15 · 327 阅读 · 1 评论 -
4.19 Python set集合方法详解(全)
前面学习了 set 集合,本节来一一学习 set 类型提供的方法。首先,通过 dir(set) 命令可以查看它有哪些方法:>>> dir(set)['add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symm原创 2021-02-13 21:13:58 · 671 阅读 · 1 评论 -
4.18 Python set集合基本操作(添加、删除、交集、并集、差集)
Python set 集合最常用的操作是向集合中添加、删除元素,以及集合之间做交集、并集、差集等运算,本节将一一讲解这些操作的具体实现。向 set 集合中添加元素set 集合中添加元素,可以使用 set 类型提供的 add() 方法实现,该方法的语法格式为:setname.add(element)其中,setname 表示要添加元素的集合,element 表示要添加的元素内容。需要注意的是,使用 add() 方法添加的元素,只能是数字、字符串、元组或者布尔类型(True 和 False)值,不能原创 2021-02-12 20:14:18 · 551 阅读 · 1 评论 -
4.17 Python set集合详解
Python 中的集合,和数学中的集合概念一样,用来保存不重复的元素,即集合中的元素都是唯一的,互不相同。从形式上看,和字典类似,Python 集合会将所有元素放在一对大括号 {} 中,相邻元素之间用“,”分隔,如下所示:{element1,element2,...,elementn}其中,elementn 表示集合中的元素,个数没有限制。从内容上看,同一集合中,只能存储不可变的数据类型,包括整形、浮点型、字符串、元组,无法存储列表、字典、集合这些可变的数据类型,否则 Python 解释器会抛出原创 2021-02-12 20:13:59 · 212 阅读 · 1 评论 -
4.16 Python使用字典格式化字符串
在《Python格式化输出》一节中,我们介绍了如何使用 print() 格式化输出各种类型的数据。我们知道,如果格式化字符串的模板中包含了多个转换说明符,后面就得按照顺序给出多个对应的变量;当字符串模板中只包含少量转换说明符时,这种写法还是比较合适的,但如果字符串模板中包含大量转换说明符,这种按顺序提供变量的方式就有些麻烦了。这时,就可以使用字典对字符串进行格式化输出,具体方法是:在字符串模板中按 key 指定变量,然后通过字典为字符串模板中的 key 设置值。请看下面的代码:# 字符串模板中使用ke原创 2021-02-12 20:13:40 · 650 阅读 · 0 评论 -
4.15 Python dict字典方法完全攻略(全)
我们知道,Python 字典的数据类型为 dict,我们可使用 dir(dict) 来查看该类型包含哪些方法,例如:>>> dir(dict)['clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']这些方法中,fromkeys() 和 get() 的用法已在《Python字典》中进行了介绍,这里不再赘述,本节只给大家介绍剩下的方法原创 2021-02-12 20:13:15 · 382 阅读 · 0 评论 -
4.14 Python dict字典基本操作(包括添加、修改、删除键值对)
由于字典属于可变序列,所以我们可以任意操作字典中的键值对(key-value)。Python 中,常见的字典操作有以下几种:向现有字典中添加新的键值对。修改现有字典中的键值对。从现有字典中删除指定的键值对。判断现有字典中是否存在指定的键值对。初学者要牢记,字典是由一个一个的 key-value 构成的,key 是找到数据的关键,Python 对字典的操作都是通过 key 来完成的。Python字典添加键值对为字典添加新的键值对很简单,直接给不存在的 key 赋值即可,具体语法格式如下:d原创 2021-02-12 20:12:51 · 388 阅读 · 0 评论 -
4.13 Python dict字典详解
Python 字典(dict)是一种无序的、可变的序列,它的元素以“键值对(key-value)”的形式存储。相对地,列表(list)和元组(tuple)都是有序的序列,它们的元素在底层是挨着存放的。字典类型是 Python 中唯一的映射类型。“映射”是数学中的术语,简单理解,它指的是元素之间相互对应的关系,即通过一个元素,可以唯一找到另一个元素。如图 1 所示。图 1 映射关系示意图字典中,习惯将各元素对应的索引称为键(key),各个键对应的元素称为值(value),键及其关联的值称为“键值对”。原创 2021-02-12 20:12:26 · 225 阅读 · 1 评论 -
4.12 Python列表和元组的底层实现
有关列表(list)和元组(tuple)的底层实现,本节分别从它们的源码来进行分析。首先来分析 list 列表,它的具体结构如下所示:/* List object interface *//*Another generally useful object type is a list of object pointers.This is a mutable type: the list items can be changed, and items can beadded or removed.原创 2021-02-12 20:12:06 · 459 阅读 · 0 评论 -
4.11 Python元组和列表的区别
元组和列表同属序列类型,且都可以按照特定顺序存放一组数据,数据类型不受限制,只要是 Python 支持的数据类型就可以。那么,元组和列表有哪些区别呢?元组和列表最大的区别就是,列表中的元素可以进行任意修改,就好比是用铅笔在纸上写的字,写错了还可以擦除重写;而元组中的元素无法修改,除非将元组整体替换掉,就好比是用圆珠笔写的字,写了就擦不掉了,除非换一张纸。可以理解为,tuple 元组是一个只读版本的 list 列表。需要注意的是,这样的差异势必会影响两者的存储方式,我们来直接看下面的例子:>原创 2021-02-12 20:11:17 · 465 阅读 · 0 评论 -
4.10 Python tuple元组详解
元组(tuple)是 Python 中另一个重要的序列结构,和列表类似,元组也是由一系列按特定顺序排序的元素组成。元组和列表(list)的不同之处在于:列表的元素是可以更改的,包括修改元素值,删除和插入元素,所以列表是可变序列;而元组一旦被创建,它的元素就不可更改了,所以元组是不可变序列。元组也可以看做是不可变的列表,通常情况下,元组用于保存无需修改的内容。从形式上看,元组的所有元素都放在一对小括号( )中,相邻元素之间用逗号,分隔,如下所示:(element1, element2, ...原创 2021-02-12 20:10:59 · 653 阅读 · 3 评论 -
4.9 Python list列表实现栈和队列
队列和栈是两种数据结构,其内部都是按照固定顺序来存放变量的,二者的区别在于对数据的存取顺序:队列是,先存入的数据最先取出,即“先进先出”。栈是,最后存入的数据最先取出,即“后进先出”。考虑到 list 类型数据本身的存放就是有顺序的,而且内部元素又可以是各不相同的类型,非常适合用于队列和栈的实现。本节将演示如何使用 list 类型变量来实现队列和栈。Python list实现队列使用 list 列表模拟队列功能的实现方法是,定义一个 list 变量,存入数据时使用 insert() 方法,设置原创 2021-02-12 20:10:41 · 607 阅读 · 2 评论 -
4.8 Python range()快速初始化数字列表
实际场景中,经常需要存储一组数字。例如在游戏中,需要跟踪每个角色的位置,还可能需要跟踪玩家的几个最高得分。在数据可视化中,处理的几乎都是由数字(如温度、距离、人口数量、经度和纬度等)组成的集合。列表非常适合用于存储数字集合,并且 Python 提供了 range() 函数,可帮助我们高效地处理数字列表,即便列表需要包含数百万个元素,也可以快速实现。Python range() 函数能够轻松地生成一系列的数字。例如,可以像如下这样使用 range() 来打印一系列数字:for value in rang原创 2021-02-12 20:10:24 · 1230 阅读 · 3 评论 -
4.7 Python list列表使用技巧及注意事项
前面章节介绍了很多关于 list 列表的操作函数,细心的读者可能会发现,有很多操作函数的功能非常相似。例如,增加元素功能的函数有 append() 和 extend(),删除元素功能的有 clear()、 remove()、pop() 和 del 关键字。本节将通过实例演示的方式来明确各个函数的用法,以及某些函数之间的区别和在使用时的一些注意事项。Python list添加元素的方法及区别定义两个列表(分别是 list1 和 list3),并分别使用 +、extend()、append() 对这两个原创 2021-02-12 20:10:07 · 610 阅读 · 0 评论 -
4.6 Python list列表查找元素
Python 列表(list)提供了 index() 和 count() 方法,它们都可以用来查找元素。index() 方法index() 方法用来查找某个元素在列表中出现的位置(也就是索引),如果该元素不存在,则会导致 ValueError 错误,所以在查找之前最好使用 count() 方法判断一下。index() 的语法格式为:listname.index(obj, start, end)其中,listname 表示列表名称,obj 表示要查找的元素,start 表示起始位置,end 表示结束原创 2021-02-12 20:09:48 · 4460 阅读 · 0 评论 -
4.5 Python list列表修改元素
Python 提供了两种修改列表(list)元素的方法,你可以每次修改单个元素,也可以每次修改一组元素(多个)。修改单个元素修改单个元素非常简单,直接对元素赋值即可。请看下面的例子:nums = [40, 36, 89, 2, 36, 100, 7]nums[2] = -26#使用正数索引nums[-3] = -66.2#使用负数索引print(nums)运行结果:[40, 36, -26, 2, -66.2, 100, 7]使用索引得到列表元素后,通过=赋值就改变了元素的值。修原创 2021-02-12 20:09:28 · 402 阅读 · 0 评论 -
4.4 Python list列表删除元素(4种方法
在 Python 列表中删除元素主要分为以下 3 种场景:根据目标元素所在位置的索引进行删除,可以使用 del 关键字或者 pop() 方法;根据元素本身的值进行删除,可使用列表(list类型)提供的 remove() 方法;将列表中所有元素全部删除,可使用列表(list类型)提供的 clear() 方法。del:根据索引值删除元素del 是 Python 中的关键字,专门用来执行删除操作,它不仅可以删除整个列表,还可以删除列表中的某些元素。我们已经在《Python列表》中讲解了如何删除整个列原创 2021-02-12 20:09:02 · 2466 阅读 · 0 评论 -
4.3 Python list列表添加元素的3种方法
实际开发中,经常需要对 Python 列表进行更新,包括向列表中添加元素、修改表中元素以及删除元素。本节先来学习如何向列表中添加元素。《Python序列》一节告诉我们,使用+运算符可以将多个序列连接起来;列表是序列的一种,所以也可以使用+进行连接,这样就相当于在第一个列表的末尾添加了另一个列表。请看下面的演示:language = ["Python", "C++", "Java"]birthday = [1991, 1998, 1995]info = language + birthdaypri原创 2021-02-12 20:08:32 · 210 阅读 · 0 评论 -
4.2 Python list列表详解
在实际开发中,经常需要将一组(不只一个)数据存储起来,以便后边的代码使用。说到这里,一些读者可能听说过数组(Array),它就可以把多个数据挨个存储到一起,通过数组下标可以访问数组中的每个元素。需要明确的是,Python 中没有数组,但是加入了更加强大的列表。如果把数组看做是一个集装箱,那么 Python 的列表就是一个工厂的仓库。大部分编程语言都支持数组,比如C语言、C++、Java、PHP、JavaScript 等。从形式上看,列表会将所有元素都放在一对中括号[ ]里面,相邻元素之间用逗号,分隔,原创 2021-02-12 20:08:15 · 355 阅读 · 1 评论 -
4.1 什么是序列,Python序列详解(包括序列类型和常用操作)
所谓序列,指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在位置的编号(称为索引)访问它们。为了更形象的认识序列,可以将它看做是一家旅店,那么店中的每个房间就如同序列存储数据的一个个内存空间,每个房间所特有的房间号就相当于索引值。也就是说,通过房间号(索引)我们可以找到这家旅店(序列)中的每个房间(内存空间)。在 Python 中,序列类型包括字符串、列表、元组、集合和字典,这些序列支持以下几种通用的操作,但比较特殊的是,集合和字典不支持索引、切片、相加和相乘操作。字符串也是原创 2021-02-12 20:07:57 · 432 阅读 · 0 评论