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

    (1)序列简介:

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

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

    (2)列表:

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

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

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

  1. 1.Python2.7.*
  2. root@SJM:/home/sunjimeng/桌面# python
  3. Python 2.7.6 (default, Mar 22 2014, 22:59:56)
  4. [GCC 4.8.2] on linux2
  5. Type "help", "copyright", "credits" or "license" for more information.
  6. >>> cmp
  7. <built-in function cmp>
  8. >>> len
  9. <built-in function len>
  10. >>> max
  11. <built-in function max>
  12. >>> min
  13. <built-in function min>
  14. >>> list
  15. <type 'list'>
  16. >>> exit()
  17. 2.python3.5.*
  18. root@SJM:/home/sunjimeng/桌面# python3.5
  19. Python 3.5.2 (default, Jul 17 2016, 11:52:15)
  20. [GCC 4.8.4] on linux
  21. Type "help", "copyright", "credits" or "license" for more information.
  22. >>> cmp #高版本里没有cmp了
  23. Traceback (most recent call last):
  24. File "<stdin>", line 1, in <module>
  25. NameError: name 'cmp' is not defined
  26. >>> len
  27. <built-in function len>
  28. >>> max
  29. <built-in function max>
  30. >>> min
  31. <built-in function min>
  32. >>> list
  33. <class 'list'> #这里也由type变成了class

1)函数:

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

比较原则:

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

比较实例:

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

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

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

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

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

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

两个版本一样的:

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

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

两个版本一样的:

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

2)方法:

Python包含以下方法:

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

  1. root@SJM:/home/sunjimeng/桌面# python
  2. Python 2.7.6 (default, Mar 22 2014, 22:59:56)
  3. [GCC 4.8.2] on linux2
  4. Type "help", "copyright", "credits" or "license" for more information.
  5. >>> list=['abc',20,'abc',True,9j]
  6. #1.append()追加元素到末尾
  7. >>> list.append(20)
  8. >>> list
  9. ['abc', 20, 'abc', True, 9j, 20]
  10. #2.count()计算20在列表中存在的个数
  11. >>> list.count('abc'),list.count(20)
  12. (2, 2)
  13. #3.extend()将另一个列表中的所有元素加到当前列表的末尾
  14. >>> list.extend(list)
  15. >>> list
  16. ['abc', 20, 'abc', True, 9j, 20, 'abc', 20, 'abc', True, 9j, 20]
  17. #4.index()返回首次匹配元素的下标
  18. >>> list.index(True)
  19. 3
  20. #5.insert()在指定位置插入元素
  21. >>> list.insert(0,'abc')
  22. >>> list
  23. ['abc', 'abc', 20, 'abc', True, 9j, 20, 'abc', 20, 'abc', True, 9j, 20]
  24. #6.pop()删除并返回列表末尾元素
  25. >>> temp=list.pop() #pop中不需要keyborder
  26. >>> temp
  27. 20
  28. >>> list
  29. ['abc', 'abc', 20, 'abc', True, 9j, 20, 'abc', 20, 'abc', True, 9j]
  30. #7.remove()移除第一个匹配的对象
  31. >>> list.remove(20),list
  32. (None, ['abc', 'abc', 'abc', True, 9j, 20, 'abc', 20, 'abc', True, 9j])
  33. #8.reverse()将列表反向
  34. >>> list.reverse(),list
  35. (None, [9j, True, 'abc', 20, 'abc', 20, 9j, True, 'abc', 'abc', 'abc'])
  36. #9.将列表排序
  37. >>> list.sort(),list
  38. Traceback (most recent call last):
  39. File "<stdin>", line 1, in <module>
  40. TypeError: no ordering relation is defined for complex numbers
  41. >>> list.remove(9j)
  42. >>> list
  43. [True, 'abc', 20, 'abc', 20, 9j, True, 'abc', 'abc', 'abc']
  44. >>> list.remove(9j)
  45. >>> list #负数不能按大小排序
  46. [True, 'abc', 20, 'abc', 20, True, 'abc', 'abc', 'abc']
  47. >>> list.sort()
  48. >>> list
  49. [True, True, 20, 20, 'abc', 'abc', 'abc', 'abc', 'abc']

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

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

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

    (3)元组:

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

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

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

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

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

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

  1. >>> tuple1=(20,)
  2. >>> tuple2=('sex',20)
  3. >>> tuple1+tuple2
  4. (20, 'sex', 20)
  5. >>> tuple2*2
  6. ('sex', 20, 'sex', 20)

3.元组的删除:

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

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

4.元组内置函数:

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

  1. root@SJM:/home/sunjimeng/桌面# python
  2. Python 2.7.6 (default, Mar 22 2014, 22:59:56)
  3. [GCC 4.8.2] on linux2
  4. Type "help", "copyright", "credits" or "license" for more information.
  5. >>> print 'abc',456,True #默认为tuple,无关闭分隔符
  6. abc 456 True
  7. >>> t1=('age','sex',20,True)
  8. >>> t2=('aga','sss',90,True)
  9. >>> cmp(t1,t2)
  10. 1
  11. >>> len(t1),len(t2)
  12. (4, 4)
  13. >>> max(t1),max(t2)
  14. ('sex', 'sss')
  15. >>> min(t1),min(t2)
  16. (True, True)
  17. >>> list=['age','sex',98,True,r'sg']
  18. >>> list
  19. ['age', 'sex', 98, True, 'sg']
  20. >>> tuple(list)
  21. ('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. MAC信息摘要

    MAC(Message Authentication Code ,消息认证码算法)是含有密钥散列函数算法,兼容MD和SHA算法的特性,并在此基础上加入了密钥.因此,MAC也称为HMAC.       ...

  2. 基于consul构建golang系统分布式服务发现机制

    原文地址-石匠的Blog: http://www.bugclosed.com/post/5 在分布式架构中,服务治理是一个重要的问题.在没有服务治理的分布式集群中,各个服务之间通过手工或者配置的方式进 ...

  3. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)3.1——使用Build Types

    问题: 你想要自定义debug和release的build types,并且新建一些新的types. 解决方案: 使用buildTypes块配置build types. 讨论: build type决 ...

  4. ASP.NET中RegisterStartupScript和RegisterClientScriptBlock有区别吗

    今天用RegisterClientScriptBlock()方法调用了alertify.js(绚丽的实现alert()同样的提示功能): Page.ClientScript.RegisterClien ...

  5. HTML学习笔记——常用元素及其属性(二)

    一.HTML表单 -- form标签 -- 与浏览者交互 1.form 标签 -- 代表HTML表单 form标签是成对出现的,以<form>开始,以</form>结束 属性. ...

  6. 2014江西理工大学C语言程序设计竞赛高级组题解

    1001 Beautiful Palindrome Number 枚举回文数字前半部分,然后判断该数字是否满足,复杂度为O(sqrt(n))! 1002 Recovery Sequence  本题的核 ...

  7. 用JS改变的元素CSS样式,css里display :none 隐藏 block 显示

    CSS样式的引用有3种方式:style引用.class引用.id引用,所以js改变元素的样式我们也分3种来说. 1.js改变由style方式引用的样式:方法一:document.divs.style. ...

  8. zend studio,操作记录

    1.代码字体大小 打开Window->Preferences->General->Apperance-Colors and fonts->Structured Text Edi ...

  9. mock数据(模拟后台数据)

    mock数据(模拟后台数据) - Emily恩 - 博客园 https://www.cnblogs.com/enboke/p/vue.html Mock.js http://mockjs.com/ 前 ...

  10. 实用的 集合工具类 和 String工具类

    集合工具类:CollectionUtil method: 1.isNotEmpty() 不为空 2.isEmpty() 为空 举例:map集合         Map<String,String ...