序列是Python中最基本的数据结构。

    (1)序列简介:

序列中的每个元素都分配一个数字标明它的位置或索引,第一个索引是0,第二个索引是1,依此类推。序列都可以进行的操作包括索引,切片,加,乘,检查成员。 此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。

Python有6个序列的内置类型,但最常见的是列表和元组。

    (2)列表:

列表可以作为一个方括号内的逗号分隔值出现。列表的数据项不需要具有相同的类型。创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

list= ['name', 'age', True, [87,98,'sjm'],'sex'];

在前面已经介绍列表的访问、更新和删除、列表脚本操作符和列表的截取。这里主要介绍列表函数和方法(主要针对2.7.x版本,Python3.5版本没有这些函数):

1.Python2.7.*
root@SJM:/home/sunjimeng/桌面# python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> cmp
<built-in function cmp>
>>> len
<built-in function len>
>>> max
<built-in function max>
>>> min
<built-in function min>
>>> list
<type 'list'>
>>> exit()
2.python3.5.*
root@SJM:/home/sunjimeng/桌面# python3.5
Python 3.5.2 (default, Jul 17 2016, 11:52:15)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> cmp #高版本里没有cmp了
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'cmp' is not defined
>>> len
<built-in function len>
>>> max
<built-in function max>
>>> min
<built-in function min>
>>> list
<class 'list'> #这里也由type变成了class

1)函数:

1.cmp(list1, list2)用于比较两个列表的元素:

比较原则:

1.如果比较的元素是同类型的,则比较其值,返回结果。
2.如果两个元素不是同一种类型,则检查它们是否是数字。
3.如果是数字,执行必要的数字强制类型转换,然后比较。
4.如果有一方的元素是数字,则另一方的元素"大"(数字是"最小的")
5.否则,通过类型名字的字母顺序进行比较。
6.如果有一个列表首先到达末尾,则另一个长一点的列表"大"。
7.如果我们用尽了两个列表的元素而且所有元素都是相等的,那么结果就是个平局,就是说返回一个 0。

比较实例:

root@SJM:/home/sunjimeng/桌面# python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> list1=['abcd',10]
>>> list2=['accd',10]
>>> list3=['abcd',11]
>>> list4=['abcd',10]
>>> cmp(list1,list2)
-1
>>> cmp(list1,list3)
-1
>>> cmp(list1,list4)
0
>>> list1=['adc',1,1] #从第一个元素开始比较
>>> list2=['adc',5]
>>> cmp(list1,list2)
-1

2.min(list)和max(list)用于返回一个列表元素中的最大值和最小值:

max(list)返回列表元素中的最大值;min(list)返回列表中的最小值;

Python2.7.*版本允许存不同类型元素的列表大小值的比较,但Python3.5.*版本只允许相同元素的列表比较

1.Python2.7.*:
root@SJM:/home/sunjimeng/桌面# python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> list=['abc',True,10,20]
>>> min(list),max(list) #Python2.7.*版本的最小值是布尔型,最大值是字符值
(True, 'abc')
>>> exit()
2.Python3.5.*:
root@SJM:/home/sunjimeng/桌面# python3.5
Python 3.5.2 (default, Jul 17 2016, 11:52:15)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> list1=['abc',True,10,20]
>>> list2=[10,20,30,40]
>>> min(list1),max(list1) #当列表中存不同类型元素时不能比较
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: bool() < str()
>>> min(list2),max(list2)
(10, 40)
>>> list3=[True,False] #False的值小于True
>>> min(list3),max(list3)
(False, True)

3.len() 方法返回列表元素个数:

两个版本一样的:

1.Python2.7.*:
root@SJM:/home/sunjimeng/桌面# python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> list=['abc',True,20]
>>> len(list)
3
>>> exit()
2.Python3.5.*:
root@SJM:/home/sunjimeng/桌面# python3.5
Python 3.5.2 (default, Jul 17 2016, 11:52:15)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> list=['abc',True,20]
>>> len(list)
3

4.list(tuple)将一个元组转化为列表:

两个版本一样的:

1.Python2.7.*:
root@SJM:/home/sunjimeng/桌面# python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> tuple=('abc',True,20)
>>> list=list(tuple)
>>> list
['abc', True, 20]
>>> exit()
2.Python3.5.*:
root@SJM:/home/sunjimeng/桌面# python3.5
Python 3.5.2 (default, Jul 17 2016, 11:52:15)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> tuple=('abc',True,20)
>>> list=list(tuple)
>>> list
['abc', True, 20]

2)方法:

Python包含以下方法:

1.Python2.7.*列表方法测试:

root@SJM:/home/sunjimeng/桌面# python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> list=['abc',20,'abc',True,9j]
#1.append()追加元素到末尾
>>> list.append(20)
>>> list
['abc', 20, 'abc', True, 9j, 20]
#2.count()计算20在列表中存在的个数
>>> list.count('abc'),list.count(20)
(2, 2)
#3.extend()将另一个列表中的所有元素加到当前列表的末尾
>>> list.extend(list)
>>> list
['abc', 20, 'abc', True, 9j, 20, 'abc', 20, 'abc', True, 9j, 20]
#4.index()返回首次匹配元素的下标
>>> list.index(True)
3
#5.insert()在指定位置插入元素
>>> list.insert(0,'abc')
>>> list
['abc', 'abc', 20, 'abc', True, 9j, 20, 'abc', 20, 'abc', True, 9j, 20]
#6.pop()删除并返回列表末尾元素
>>> temp=list.pop() #pop中不需要keyborder
>>> temp
20
>>> list
['abc', 'abc', 20, 'abc', True, 9j, 20, 'abc', 20, 'abc', True, 9j]
#7.remove()移除第一个匹配的对象
>>> list.remove(20),list
(None, ['abc', 'abc', 'abc', True, 9j, 20, 'abc', 20, 'abc', True, 9j])
#8.reverse()将列表反向
>>> list.reverse(),list
(None, [9j, True, 'abc', 20, 'abc', 20, 9j, True, 'abc', 'abc', 'abc'])
#9.将列表排序
>>> list.sort(),list
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: no ordering relation is defined for complex numbers
>>> list.remove(9j)
>>> list
[True, 'abc', 20, 'abc', 20, 9j, True, 'abc', 'abc', 'abc']
>>> list.remove(9j)
>>> list #负数不能按大小排序
[True, 'abc', 20, 'abc', 20, True, 'abc', 'abc', 'abc']
>>> list.sort()
>>> list
[True, True, 20, 20, 'abc', 'abc', 'abc', 'abc', 'abc']

2.Python3.5.*列表测试:

除了不能使用sort()函数给存不同元素的列表排序之外,其余相同。

root@SJM:/home/sunjimeng/桌面# python3.5
Python 3.5.2 (default, Jul 17 2016, 11:52:15)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> list=['abv',20,45,True]
>>> list_N=[10,30,20,40,0]
>>> list.sort()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: int() < str()
>>> list_N.sort()
>>> list_N
[0, 10, 20, 30, 40]

    (3)元组:

Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可:

>>> tuple=(98,'MenAngel',True,['name',10,'age',True])
>>> tuple[3]
['name', 10, 'age', True]
>>> tuple[3][1]=20
>>> tuple[3]
['name', 20, 'age', True]
>>> tuple[0]=True
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

1.创建空元组与只有一个元素的元组:(Python2.7.*与Python3.5.*相同):

root@SJM:/home/sunjimeng/桌面# python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> tuple1=()
>>> tuple2=(20) #这里代表int型
>>> tuple3=(20,) #这里代表tuple型
>>> tuple4=(20,20)
>>> tuple,tuple1,tuple2,tuple3
(<type 'tuple'>, (), 20, (20,))
>>> tuple1,tuple2,tuple3,tuple4
((), 20, (20,), (20, 20))

2.元组的连接:(结合元素运算符)

访问元组和访问列表的方法相同,但元组不允许修改,但可以对元组进行连接组合形成新的元组:

>>> tuple1=(20,)
>>> tuple2=('sex',20)
>>> tuple1+tuple2
(20, 'sex', 20)
>>> tuple2*2
('sex', 20, 'sex', 20)

3.元组的删除:

元组中的单个元素是不允许删除的,只能删除整个元组。用del语句:

>>> t1=('name=MenAngel', 'sex=True', 'age=19')
>>> t1
('name=MenAngel', 'sex=True', 'age=19')
>>> del t1
>>> t1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 't1' is not defined

4.元组内置函数:

Python元组包含了以下内置函数:

root@SJM:/home/sunjimeng/桌面# python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print 'abc',456,True #默认为tuple,无关闭分隔符
abc 456 True
>>> t1=('age','sex',20,True)
>>> t2=('aga','sss',90,True)
>>> cmp(t1,t2)
1
>>> len(t1),len(t2)
(4, 4)
>>> max(t1),max(t2)
('sex', 'sss')
>>> min(t1),min(t2)
(True, True)
>>> list=['age','sex',98,True,r'sg']
>>> list
['age', 'sex', 98, True, 'sg']
>>> tuple(list)
('age', 'sex', 98, True, 'sg')

tuple没有sort()函数,因为tuple不允许修改。另外max和min函数用的时候Python2.7.*可以用在存不同类型元素的tuple中,但在Python3.5.*就不行了!

Python学习进程(9)序列的更多相关文章

  1. Python学习一:序列基础详解

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7858473.html 邮箱:moyi@moyib ...

  2. Python学习---进程 1225

    进程创建 进程创建: 第一种:直接创建 第二种:利用类来实现 第一种:直接创建 from multiprocessing import Process import time def f(name): ...

  3. Python学习进程

    1周第1天 主要是变量的学习(11月8日) 1.1 python安装(win和linux下)1.2 ipython安装及使用1.3 变量的定义1.4 变量赋值1.5 运算符(赋值.算术.关系.逻辑)1 ...

  4. Python学习进程(3)Python基本数据类型

        本节介绍在Python语法中不同的变量数据类型.     (1)基本数据类型: >>> a=10; >>> b=10.0; >>> c=T ...

  5. python学习 数据类型之序列

    一.序列(本文使用python3.5)############################################################# 列表.元组 字符窜都是序列#特点:#1 ...

  6. python学习笔记九——序列

    4.4 序列 序列是具有索引和切片能力的集合.元组.列表和字符串具有通过索引访问某个具体的值,或通过切片返回一段切片的能力,因此元组.列表和字符串都属于序列.序列索引功能演示: tuple=(&quo ...

  7. Python学习进程(15)常用内置函数

        本节介绍Python的一些常用的内置函数.     (1)cmp(x, y): cmp()函数比较 x 和 y 两个对象,并根据比较结果返回一个整数,如果 x<y,则返回-1:如果x&g ...

  8. Python学习进程(14)异常处理

        本节介绍Python进行异常处理的方式,异常处理机制可以帮助我们调试python程序.     (1)异常的简介:     异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行 ...

  9. Python学习进程(13)文件与IO

        本节介绍基本的IO函数和文件的读写操作.     (1)读取键盘输入: Python用于读取键盘输入的函数有两个:raw_input与input. 1)raw_input函数 从标准输入读取一 ...

随机推荐

  1. Windows Azure 系列-- Azure Redis Cache的配置和使用

    假设还没有配置Azure Power shell 能够參照这里进行配置:http://blog.csdn.net/lan_liang/article/details/46850221 打开Azure ...

  2. F - Goldbach`s Conjecture 对一个大于2的偶数n,找有多少种方法使两个素数的和为n;保证素数a<=b; a+b==n; a,b都为素数。

    /** 题目:F - Goldbach`s Conjecture 链接:https://vjudge.net/contest/154246#problem/F 题意:对一个大于2的偶数n,找有多少种方 ...

  3. 关于JAVA编译时找不到自定义包的问题

    这两天照网上的教程,学习JSP/SERVLET/JAVABEAN,写了几个JAVA文件,目录放在TOMCAT的WEBAPPS下面,通过javac编译时,老提示找不到指定的包: 下图是我的目录路径: 通 ...

  4. Java NIO(2):缓冲区基础

    缓冲区(Buffer)对象是面向块的I/O的基础,也是NIO的核心对象之一.在NIO中每一次I/O操作都离不开Buffer,每一次的读和写都是针对Buffer操作的.Buffer在实现上本质是一个数组 ...

  5. MFC多国语言——配置文件

    前段时间,因工作需要,本地化了一个英文版本的产品. 在网上查阅了若干资料,在此进行一个简单的整理. 在MFC程序中,实现多国语言的方式很多,我们选择的是使用配置文件的方法. 在通过配置文件方式实现多国 ...

  6. shell编程实战总结

    最近复习一下shell,顺便高级进阶一下,之前写脚本能简单尽量简单来,发现好多高深的东西还是没有理解,因此在这里记录一下整个过程并做相应的总结. 通过上代码的方式来介绍,后续可能会调整相应的排版 1. ...

  7. Unity3d 游戏退出界面1

    功能需求:点击退出按钮,弹出“退出”UI,询问玩家是否退出游戏: 退出按钮 退出UI: publicclass GameQuit : MonoBehaviour { // 取消按钮 public  G ...

  8. codevs 必做:堆:1245、2879 并查集:1069、1074、1073

    1245 最小的N个和  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description 有两个长度为 N ...

  9. 【BZOJ2282】[Sdoi2011]消防 树形DP+双指针法+单调队列

    [BZOJ2282][Sdoi2011]消防 Description 某个国家有n个城市,这n个城市中任意两个都连通且有唯一一条路径,每条连通两个城市的道路的长度为zi(zi<=1000). 这 ...

  10. bootstrap获取总条目数

    $('#table').on('load-success.bs.table', function () {alert($('#table').bootstrapTable('getOptions'). ...