原文地址:
http://www.cnblogs.com/zero86/archive/2012/11/19/2776784.html
在Python中最基本的数据结构是序列(sequence),第一个索引从0开始;
在Python中,索引可以是负数,-1表示最后一个元素(倒数第一),-2表示倒数第二个元素;
例如:
通用序列操作
索引(indexing)、分片(sliceing)、加(adding)、乘(multiplying),判断某个元素是否属于该序列成员、此外,还有计算序列长度,找出最大或最小元素的内建函数;
索引
从 0 开始递增,例:
如果索引是负数,则会从最右边开始,也就是从最后第一个元素开始计数,例:
序列到 -5 的时候就是最后一个元素了(从右向左),等同于序列 0 ;
例:我们输入一个年份,只对最后 2 位感兴趣;
这里使用 : 表示取一定范围的元素,2:4 表示获取第 3 个和第 4 个元素;
例:输入年月日,以月/日/年的英文+数字形式打印出日期;
代码:
运行结果:
分片
可以使用分片操作( : )来访问一定范围内的元素,例:
注意:分片操作,第一索引元素是包括其自身在分片内的,而第二个索引元素是不包括其自身在内的,类似数学上的半开区间 [a, b);
例:
在分片操作中如果要取得最后一个元素,可以把第二个索引的最大值加一(以这个例子来说就是numbers[9,10]);
注意:如果分片中,左边的索引比右边出现的晚,结果就是一个空序,例:
另外要取得的分片部分包括结尾元素,那么只需空置最后一个索引:
这种方法同样适用于序列的开始以及整个序列:
例,输入一个URL(假设形式为http://www.somedomainname.com),提取域名;
步长
在进行分片的时候,默认步长(step length)是1,通常是隐式设置的,这里可以手动设置;步长可以为负数,那么它将会从右到左提取元素;
例:
个人分析,其实就是设步长为n,分片起始地索引为f,分片结束索引为l,目前正在执行的索引序列为t,那么它的执行过程就是:
如果n为正值(伪代码):
loop p1:
t = f;
if t < l then
(print numbers[t]);
t = t + n;
else goto ...
goto p1
如果n为负值(伪代码):
loop p1:
t = f;
if t > l then
(print numbers[t]);
t = t + n;
else goto ...
goto p1
序列的相加和乘法
通过使用加号可以进行数列的连接操作:
用过数字x乘以一个序列,会产生一个新序列,原来的序列将被重复x次;
例:
如果要初始化一个空列表,可以使用Python内建值:None,例:
例:读取用户输入的一条信息,然后再屏幕上横向居中显示一个矩形,矩形中间显示刚才输入的信息;
代码:
运行结果:
这里的screen_width = 102 是我的屏幕宽度,矩形的宽度比文字宽度大6,每边多3个位置,用来排版的;
成员资格
为了检查一个值是否在序列中,可以使用in运算符,这个运算符检测某个条件是否为真,然后返回相应的值,例:
最后是检查字符串,字符串最小的单位是字符,所以检测'$$'和空格都能查到(只要是连续的字符),但是查找'空格+!'是查不到的;
再看一个例子:查看输入的用户名和PIN号码是否存在数据列表中;
代码:
运行结果:
长度、最小值和最大值
len函数返回序列中包含元素的数量;
min和max函数分别返回序列中最大和最小的元素;
例:
列表
list函数
因为字符串不能像列表一样被修改,所以有时候根据字符串创建列表会很有用:
基本的列表操作
- 元素赋值
使用索引标记来为某个特定的元素赋值,例:
- 删除元素
使用del语句实现,例:
- 分片赋值
例:
numbers[1:1] = [2, 3, 4] 用来在索引1的位置插入几个数;
列表方法
- append
用于在列表尾部追加新对象,例:
- count
统计某个元素在列表中出现的次数,例:
- extend
在列表末尾追加另一个序列中的多个值,例:
extend和字符串连接符+的区别是,+并不会修改原来的某个列表,而是创建一个副本存储新列表,另外也可以使用a[len(a):] = b的方式扩展列表a,不过可读性不如使用extend函数;
- index
用于找出某个值的第一个匹配索引位置,例:
如果未找到,触发一个异常;
- insert
将对象插入到列表中,例:
insert方法不会替换原有数据,它可以在指定位置添加对象,insert的方法也可以用分片赋值来实现,不过可读性不强;
- pop
该方法会移除列表中的一个元素(默认是最后一个),并且返回该元素的值,例:
pop()方法会修改原有列表,pop()方法会移除一个元素;
使用pop可以实现常见的数据结构:栈,即:后进先出LIFO;在Python中没有所谓的入栈(push)方法,但是可以使用append方法来代替,例:
如 果要实现先进后出(FIFO),可以使用insert(0,x)代替append方法,这里意思每次在序列最前端插入数据,每次pop()的数据就是最先 存入的数据;或者继续使用append,但必须使用pop(0)来代替pop(),这里的表示,依然使用append在列表后面添加数据,但是 pop(0)则是每次在列表最前端弹出数据,也就实现了最先存入的数据先被取出,例:
不过最好的解决方案是使用collection模块中的deque对象;
- remove
用于移除列表中某个值的第一个匹配项,例:
值得注意的是,remove()是一个没有返回值的方法;
- reverse
将列表中的元素反向存放,例:
reverse()方法并不返回值,如果要对一个列表反向迭代(并不修改原来列表),可以使用reversed()函数,它返回一个迭代器(iterator)对象,然后使用list()函数可把返回的对象转换成列表;
- sort
对列表进行排序,这个排序结果是直接保存在原列表的(2.3版以前不修改原序列,而是返回一个副本),例:
如果要保存原来的列表,可以这样:
不要执行类似如下的操作:
sort()方法在2.3版本后直接修改原有列表,而且它并不返回值;
还要注意,不要使用y = x,进行列表赋值,来保存原有列表,这是没用的,它实际会让他们指向同一个列表(地址),因为传递的是指针,例:
另外,可以使用sorted()函数获取已排序的列表副本,例:
它会返回一个已排序的列表,而不会去修改原有列表;
- 高级排序
如果希望元素按照特定方式排序,可以通过compare(x, y)的形式自定义比较函数,compare(x, y)函数会在x > y时返回1,x < y时返回-1,x = y时返回0,内建函数cmp(),提供了比较函数的默认实现方式,例:
关键字参数key,可以指定关键字进行排序,如果要按元素长度排序可以,可以指定key=len,例:
int型不存在长度对比,他都是根据系统平台来说的:16/32位;
另一个关键字参数reverse是简单的布尔值,用来判断是否进行反向排序,例:
元组:不可变序列
元组与列表一样,也是一种序列,唯一不同是元组不能修改(字符串也是如此),创建元组的语法很简单:如果用逗号分隔了一些值,那么就自动创建了元组,例:
要创建一个元素的元组,可以逗号后面什么都不加,空元组直接写()即可,另外注意长度为1的元组和非元组的区别;
tuple函数
把一个序列转换为元组,类似list()把序列转换为列表,如果参数就是元组,那么就会被原样返回,例:
元组也可以进行分片操作;
相关推荐
python容器:列表,元组,字典,集合的思维导图
列表和原组;列表(list)是包含0个或多个元素的有序序列,属于序列类型。 列表的长度和内容都是可变的,可自由对列表中的元素进行增加、删除或替换。 列表没有长度限制,元素类型可以不同,可以同时包含整数、实数、...
Python 语言中提供了多种容器类型,包括列表、元组、字典和集合等,这些容器类型可以用来存储和操作数据。下面是对这些容器类型的详细介绍: 列表(List) 列表是一种可变的容器类型,用于存储多个元素。列表可以...
序列 什么是序列 列表(List)是什么 列表对象的常用方法列表对象的四种创建列表元素的增加删除列表元素的访问计数列表对象的切片操作列表元素的排序逆序列表相关的内置函数 多维列表(List的延伸) 二维列表 元组...
在Python中,数据结构是非常基础且重要的概念,包括列表、元组、字典和集合。本文将深入探讨这些概念及其用法。 首先,我们来看列表(List)。列表是Python中最常用的数据结构之一,它可以存储任意类型的元素,并且...
总结来说,Python的序列类型提供了强大的数据组织和处理能力,无论是简单的字符串操作,还是复杂的列表和元组操作,都是Python编程中不可或缺的基础。了解和熟练掌握这些操作对于深入学习Python至关重要。
在Python编程语言中,序列是一种基础且重要的数据结构,它包括了列表、元组和字符串等类型。序列的每个元素都有一个独特的索引,索引从0开始,最后一个元素的索引是-1。这意味着你可以通过索引来访问序列中的任何...
在Python编程中,数据结构是组织和存储数据的重要方式,其中列表和元组是最常见的两种序列类型。本章深入探讨了这两个概念以及它们在实际编程中的应用。 **序列的概念** 序列是一系列元素按照特定顺序存储的数据...
4.Python的列表和字典可以存储任意类型的元素,所以我们可以将字典存储在列表中,也可以将列表存储在字典中,这种操作称为嵌套。 嵌套:列表中存储字典,字典中存储列表,字典中存储字典, 更多有关字典使用知识,请...
Python中的列表、元组、集合和字典是四种基本的数据结构,它们各自具有独特的特性和用途,下面将详细解释它们的区别以及如何进行相互转换。 **列表(List)**:列表是Python中最常用的数据结构,它是一个有序的序列,...
在本节"04-2:Python教程 课程 进阶 列表与元组"中,我们将深入探讨Python编程语言中的两种基本数据结构——列表和元组。这两个概念是Python编程的基础,对于任何想要精通Python的人来说,理解和掌握它们至关重要。 ...
还在为数据存储而烦恼?Python 数据容器,帮你轻松解决数据管理难题!
在本节"04-3:Python教程 课程 进阶 列表与元组"中,我们将深入探讨Python编程语言中的两种基本数据结构——列表和元组。这些数据结构在Python编程中扮演着至关重要的角色,是组织和处理数据的基础。 首先,我们来...
**Python语言基础:元组** 元组在Python编程语言中是一种基本的数据结构,它与列表相似,但有关键的区别——元组是不可变序列。这意味着一旦创建了元组,就不能更改其任何元素。元组使用圆括号 `()` 来定义,元素...
这篇学习笔记主要涵盖了Python的基础知识,包括列表(List)、元组(Tuple)、输入与输出、条件语句(If-Else)以及循环结构(For-While)。下面将详细解释这些概念。 1. **列表(List)** 列表是Python中最常用的数据结构...
在Python中,列表(List)、元组(Tuple)和字典(Dictionary)是常用的三种数据结构,它们各有特点,适用于不同场景的数据存储和操作。 列表是Python中最常用的可变序列类型,使用方括号[]定义,元素之间用逗号...
'千锋python基础教程:5、元组&字符串&字典' 千锋python基础教程:6、函数基础 '千锋python基础教程:7、装饰器&偏函数与作用域与异常处理与文件读写' 千锋python基础教程:8、os与窗口控制与内存修改与语言 第...
在Python编程语言中,元组(Tuple)是一种不可变的数据结构,它允许我们存储一系列有序的元素。在处理元组时,装包和拆包是两种重要的操作,可以帮助我们更高效地处理多个值。 装包是指将多个独立的值合并成一个...