Python中列表、字典、元组数据结构的简单学习笔记
作者:Flyaway 发布时间:2022-08-08 22:19:11
列表
列表是Python中最具灵活性的有序集合对象类型。与字符串不同的是,列表可以包含任何类型的对象:数字、字符串甚至其他列表。列表是可变对象,它支持原地修改的操作。
Python的列表是:
任意对象的有序集合
通过偏移读取
可变长度、异构以及任意嵌套
属于可变序列的分类
对象引用数组(列表中的存储的是对象的引用,而不是对象的拷贝)
实际应用中的列表
>>基本列表操作
由于列表是序列,它支持很多与字符串相同的操作。列表对”+”和”*“操作的响应与字符串很相似,两个操作的意思也是合并和重复,只不过是一个新的列表,而不是一个字符串。
>>索引、分片和矩阵
对于列表而言,索引和分片操作与字符串中的操作基本相同。然而对列表进行索引的结果就是你指定的偏移处的对象(不管是什么类型),而对列表分片时往往返回一个新的列表。
matrix = [[1,2,3],[4,5,6],[7,8,9]]
上述代码定义了一个3*3的二维矩阵。
>>原处修改列表
索引与分片的赋值
当使用列表的时候,可以将它赋值给一个特定项(偏移)或整个片段(分片)来改变它的内容,索引和分片的赋值都是原地修改,它们对列表进行直接修改,而不是生成一个新的列表作为结果.Python中的索引赋值与C及大多数其他语言极为相似——Python用一个新值取代指定偏移的对象引用
列表方法的调用
最常用的列表方法是append,它能够简单地将一个单项(对象引用)加至列表末端。与合并不同的是,append允许传入单一对象而不是列表。L.append(X)与L+[X]的结果类似,不同的是,前者会原地修改L,而后者会生成新的列表。 另一个比较常用的方法就是sort,它原地对列表进行排序。sort是使用Python标准的比较检验作为默认值(在这里指字符串比较),而且以递增的顺序进行排序。另外,我们可以通过传入一个关键字参数来修改排序行为——这是指定按名称传递的函数调用 * 殊的”name=value”语言。
需要注意的是:要当心append和sort是原地修改列表对象的,方法的返回结果并没有返回列表(从技术上讲,两者的返回值都是None)。如果编写类似L=L.append(X)的语句,将不会得到修改后的值(实际上,会失去整个列表的引用)。
reverse:原地反转列表
extend:在末端插入多个元素
pop:删除最后一个元素,同时返回被删除的值
remove:通过值删除某个元素
insert:在偏移处插入某个元素
index:查找某元素的偏移
字典
如果把列表看做是有序的对象集合,那么就可以把字典当成是无序的集合,它们主要的差别就在于:字典当中的元素师通过键来存取的,而不是通过偏移存取。 Python字典的主要属性如下:
通过键而不是偏移来读取
任意对象的无序集合
可变长、异构、任意嵌套
属于可变映射类型
对象引用表(散列表)(字典中的存储的是对象的引用,而不是对象的拷贝)
实际应用中的字典
>>原处修改字典
与列表相同,向字典中已存在的索引值赋值会改变与索引相关联的值。然而,与列表不同的是,每当对新字典键进行赋值(之前没有被赋值的键),就会在字典内生成一个新的元素。
>>其他字典的方法
keys:返回字典的键列表
values:返回字典的值列表
items:返回字典的(key,value)对元组
update:合并
pop:从字典中删除一个键并返回它的值
>>字典用法注意事项
序列运算无效
对新索引赋值会添加项
键不一定总是字符串
>>创建字典的其他方法
#Method1
D = {'name':'mel','age':45}
#Method2
D = {}
D['name']='mel'
D['age']=45
#Method3
D = dict(name='mel',age=45)
#Method4
D = dict([('name','mel'),('age',45)])
以上四种形式都会建立相同的字典。
>>Python3.0中的字典变化
字典的功能在Python3.0中已经有所变化了,具体来说,Python3.0中的字典:
支持一种新的字典解析表达式,这是列表和集合解析的”近亲”
对于D.key,D.values和D.items方法,返回可迭代的视图,而不是列表
由于前面一点,需要新的编码方式通过排序键来遍历
不再直接支持相对大小比较——取而代之的是手动比较
不再有D.has_key方法——相反,使用in成员关系测试
字典视图
在Python3.0中,字典的keys、values和items都返回视图对象,而在Python2.6中,它们返回实际的结果列表。Python3.0中的字典视图并非创建后不能改变,它们可以动态地反映在视图对象创建之后对字典做出点修改:
D={'a':1,'b':2,'c':3}
K = D.keys()
V = D.values()
del D['b']
list(K)
上述代码中,最后一行的结果是[‘a','c']。
keys方法所返回的对象类似于集合,并且支持交集和并集等常见的操作;values视图不是这样,因为它们不是唯一的;但items结果是的,如果(key,value)对是唯一的并且可散列的话。
元组
元组由简单的对象构成。元组与列表非常类似,只不过元组不能再原处修改(它们是不可变的),通常是写成圆括号(而不是方括号)中一系列项。它的属性有:
任意对象的有序集合
通过偏移存取
属于不可变序列类型
固定长度、异构、任意嵌套
对象引用的数组
>>实际应用中的元组
元组的特殊语法:逗号和圆括号
因为圆括号也可以把表达式括起来,如果圆括号里的单一对象时元组对象而不是一个简单的表达式,需要对Python进行特别说明。如果确实想得到一个元组,只要在这一单个元素之后、关闭圆括号之前加上一个逗号就可以了。
x = (40)
y = (40,)
上述代码中,第一行的x是一个整数,第二行的y则是一个包含了一个元素40的元组。
转换、方法以及不可变性
元组的操作和字符串及列表是一致的,值得注意的区别在于”+”、”*“以及分片操作应用于元组时将返回新元组,并且元组不提供字符串、列表和字典中的方法。
>>为什么有了列表还要元组
元组的不可变性提供了某种完整性,这样你可以确保元组在程序中不会被另一个引用修改,而列表就没有这样的保证了。
猜你喜欢
- MySQL 客户端连接成功后,通过 show [session|global]status 命令 可以提供服务器状态信息,也可以在操作系统上
- 1. 首先看要设置登陆的界面 book/view.py@user_util.my_login #相当于 select_all=my_logi
- 在极坐标中,圆的表示方式为:x=x0+rcosθy=y0+rsinθ圆心为(x0,y0),r为半径,θ为旋转度数,值范围为0-359如果给定
- 前言如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有
- js实现点击掉落特效 先看看效果图 话不多说代码<!DOCTYPE HTML><html><head
- 自己有一套模块化的思路,想搜索一下有没有共鸣结果排名靠前的是通过class拼凑页面的想法。模块化是twinsen提出来的,从我接收第一个po
- 一、思路1、通过window的aip函数CreateFile()函数获得文件句柄2、检测在获得句柄的时候是否报错“文件被占用无法打开”3、如
- Python中的内建函数和可迭代对象,迭代器求值标识id() #标识id 返回对象的唯一标识,CPython返回内存地址hash() #哈希
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN&
- 我们之前要想在调度里面实现延时执行,我们可以使用管道阻塞,直到有人往管道里面写东西才变通畅,还可以使用sleep来睡觉,但是睡觉的过程,协程
- 一、创建虚拟环境(1)打开cmd命令窗口(2)创建虚拟环境 conda create -n mydjango_env(3)查看虚拟环境 co
- php mysql PDO 查询操作的实例详解<?php $dbh = new PDO('mysql:host=localho
- 不论是数据挖掘还是数据建模,都免不了数据可视化的问题。对于Python来说,Matplotlib是最著名的绘图库,它主要用于二维绘图,当然它
- 本文实例为大家分享了python名片管理系统的具体代码,供大家参考,具体内容如下import oslist_all = []def page
- 前言近来chatGPT挺火的,也试玩了一下,确实挺有意思。这里记录一下在Python中如何去使用chatGPT。本篇文章的实现100%基于
- 简单来说conda有什么用?方便的创建多个python虚拟环境,方便多个python项目同时开发的时候,每个项目都有自己独立的python开
- 打开一个Project在导航区带出多个Project将会影响PyCharm的运行速度,解决这个问题的方式只打开一个即可。有时候打开一个Pro
- matplotlib官网 matplotlib库默认英文字体添加黑体(‘SimHei')为绘图字体代码:plt.rcPar
- python一直被病垢运行速度太慢,但是实际上python的执行效率并不慢,慢的是python用的解释器Cpython运行效率太差。“一行代
- 本文实例讲述了Python类装饰器。分享给大家供大家参考,具体如下:编写类装饰器类装饰器类似于函数装饰器的概念,但它应用于类,它们可以用于管