序列概览

  Python 包含6 种内建的序列,这里重点讨论最常用的两种类型:列表和元组。

  列表与元组的主要区别在于,列表可以修改,元组则不能。也就是说如果要根据要求来添加元素,那么列表可以会更好用;而出于某些原因,序列不能修改的时候,使用元组则更为合适。

在操作一组数值的时候,序列很好用。可以用序列表示数据库中一个人的信息---第一1是姓名,第2个元素是年龄。根据上述内容编写一个列表。

  1. >>> hu=['huhu',25]

同时,序列也可以包含其他的序列,因此,构建如下一个人员的信息的列表也是可的,这个列表就是你的数据库:

  1. >>> huhu = ['huhu',25]
  2. >>> chongshi = ['chongshi',32]
  3. >>> database = [huhu,chongshi]
  4. >>> database
  5. [['huhu', 25], ['chongshi', 32]]

通用序列操作

  所有序列类型都可以进行某些特定的操作。这些操作包括:索引(indexing)、分片(sliceing)、加(adding)、乘(multiplying)以及检查某个元素是否属于序列的成员(成员资格)。

索引

序列中的所有元素都是有编号的-----从0 开始递增。这些元素可以通过编号分别访问,如下所示:

  1. >>> greeting = 'chongshi'
  2. >>> greeting[0]
  3. 'c'
  4. >>> greeting[2]
  5. 'o'

使用负数索引时,python 会从右边,也就是从最后1个元素开始计数。最后1个元素的位置编号是-1 (不是-0, 因为那会和第1个元素重合):

  1. >>> greeting = 'chongshi'
  2. >>> greeting[-1]
  3. 'i'
  4. >>> greeting[-2]
  5. 'h'

当然,我们也可以通过另一种方式使用所引,两种方式的效果是一样的:

  1. >>> 'chongshi'[0]
  2. 'c'
  3. >>> 'chongshi'[-1]
  4. 'i'

如果一个函数调用返回一个序列,那么可以直接对返回结果进行索引操作。例如,假设只对用户输入年份的第4个数字感兴趣,那么,可以进行如下操作:

  1. >>> fourth = raw_input('year:')[3]
  2. year:2013
  3. >>> fourth
  4. '3'

提示:请试着敲击代码,更能助帮你理解。不要懒得动手。

索引示例:

  1. #根据给定的年月日以数字形式打印出日期
  2. months = [
  3. 'January',
  4. 'February',
  5. 'March',
  6. 'April',
  7. 'May',
  8. 'June',
  9. 'July',
  10. 'August',
  11. 'September',
  12. 'October',
  13. 'November',
  14. 'December'
  15. ]
  16. #以1-31的数字作为结尾的列表
  17. endings = ['st','nd','rd']+ 17*['th']\
  18. +['st','nd','rd']+ 7*['th']\
  19. +['st']
  20. year =raw_input('year:')
  21. month =raw_input('month(1-12):')
  22. day =raw_input('day(1-31)')
  23.  
  24. month_number = int(month)
  25. day_number = int(day)
  26.  
  27. #记得要将月份和天数减1,以获得正确的索引
  28. month_name = months[month_number-1]
  29. ordinal = day + endings[day_number - 1]
  30.  
  31. print month_name + ' ,' + ordinal + ' ,' + year
  32. -----------------------------------------------
  33. 输入:
  34. >>>
  35. year:2013
  36. month(1-12):4
  37. day(1-31)14
  38. 输出:
  39. April ,14th ,2013

分片

与使用索引来访问单个元素类似,可以使用分片操作来访问一琮范围内的元素。分片通过冒号相隔的两个索引来实现:

  1. >>> tag = '<a href="http://www.python.org">Python web site</a>'
  2. >>> tag[9:30] # 取第9个到第30个之间的字符
  3. 'http://www.python.org'
  4. >>> tag[32:-4] #取第32到第-4(倒着数第4个字符)
  5. 'Python web site'
  6. >>>

如果求10个数最后三个数:

  1. >>> numbers = [0,1,2,3,4,5,6,7,8,9]
  2. >>> numbers[7:-1] # 从第7个数到 倒数第一个数
  3. [7, 8] #显然这样不可行
  4. >>> numbers[7:10] #从第7个数到第10个数
  5. [7, 8, 9] #这样可行,索引10指向的是第11个元素。
  6. >>> numbers[7:] # 可以置空最后一个索引解决
  7. [7, 8, 9]
  8. >>> numbers[:3]
  9. [0, 1, 2]
  10. >>> numbers[:]
  11. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

分片示例:

  1. # 对http://fnng.cnblogs.com形式的URL进行分割
  2.  
  3. url = raw_input('Please enter the URL:')
  4. domain = url[11:-4]
  5.  
  6. print "Domain name:" + domain
  7. ------------------------------------------
    输入:
  8. >>>
  9. Please enter the URL:http://fnng.cngblogs.com
  10. 输出:
  11. Domain name:.cngblogs

更大步长:

  1. >>> numbers = [0,1,2,3,4,5,6,7,8,9]
  2. >>> numbers[0:10:1] #求0到10之间的数,步长为1
  3. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  4. >>> numbers[0:10:2] #步长为2
  5. [0, 2, 4, 6, 8]
  6. >>> numbers[0:10:3] #步长为3
  7. [0, 3, 6, 9]

序列相加

通过使用加号可以进行序列的连接操作:

  1. >>> 'hello.'+'world!'
  2. 'hello.world!'
  3. >>> [1,2,3] + 'world!'
  4.  
  5. Traceback (most recent call last):
  6. File "<pyshell#20>", line 1, in <module>
  7. [1,2,3] + 'world!'
  8. TypeError: can only concatenate list (not "str") to list

正如错误提示,列表和字符串是无法连接接在一起的,尽管它他们都是序列。简单来说,两种相同类型的序列才能进行连接操作。

乘法

  1. >>> 'python ' * 5
  2. 'python python python python python '
  3. >>> [25] * 10
  4. [25, 25, 25, 25, 25, 25, 25, 25, 25, 25]

如果想创建一个占用十个元素空间,却不包括任何有用的内容的列表,可以用Nome

  1. >>> sequence = [None] * 10
  2. >>> sequence
  3. [None, None, None, None, None, None, None, None, None, None]

序列(字符串)乘法示例:

  1. # 以正确的宽度在居中的“盒子”内打印一个句子
  2.  
  3. # 注意,整数除法运算符(//)只能用在python 2.2 以及后续版本,在之前的版本中,只能用普通除法(/)
  4.  
  5. sentence = raw_input("Sentence : ")
  6.  
  7. screen_width = 80
  8. text_width = len(sentence)
  9. box_width = text_width + 6
  10. left_margin = (screen_width - box_width) //2
  11.  
  12. print
  13. print ' ' * left_margin + '+' + '-' * (box_width - 2)+ '+'
  14. print ' ' * left_margin + '| ' + ' ' * text_width + ' |'
  15. print ' ' * left_margin + '| ' + sentence + ' |'
  16. print ' ' * left_margin + '| ' + ' ' * text_width + ' |'
  17. print ' ' * left_margin + '+' + '-' * (box_width - 2)+ '+'

  18. ---------------------------------------------------------
    输入:
  19. >>>
  20. Sentence : haha! this is my box
  21. 输出:
  22.  
  23. +------------------------+
  24. | |
  25. | haha! this is my box |
  26. | |
  27. +------------------------+

成员资格

为了检查一个值是否在序列中,可以使用in 运算符。该运算符和之前已经讨论过的(例如 + , * 运算符)有一点不同。这个运算符检查某个条件为真或假的(True or False )。

in运算符的例子:

  1. >>> permissions = 'rw'
  2. >>> 'w' in permissions
  3. True
  4. >>> 'y' in permissions
  5. False
  6. >>> users = ['zhangsan', 'lisi','wangwu']
  7. >>> raw_input('Enter your user name: ') in users
  8. Enter your user name: lisi
  9. True
  10. >>> subject ='$$$ Get rich now!!! $$$'
  11. >>> '$$$' in subject
  12. True

长度、最小值和最大值

内建函数len、min 和max 非常有用。Len函数返回序列中所包含元素的数量。Min函数和max函数则分别返回序列中最大和最小的元素。

  1. >>> numbers = [100,34,678]
  2. >>> len (numbers)
  3. 3
  4. >>> max(numbers)
  5. 678
  6. >>> min(numbers)
  7. 34
  8. >>> max(2,3)
  9. 3
  10. >>> min(9,3,2,5)
  11. 2

python基础教程(三)的更多相关文章

  1. 改写《python基础教程》中的一个例子

    一.前言 初学python,看<python基础教程>,第20章实现了将文本转化成html的功能.由于本人之前有DIY一个markdown转html的算法,所以对这个例子有兴趣.可仔细一看 ...

  2. .Net程序员之Python基础教程学习----列表和元组 [First Day]

    一. 通用序列操作: 其实对于列表,元组 都属于序列化数据,可以通过下表来访问的.下面就来看看序列的基本操作吧. 1.1 索引: 序列中的所有元素的下标是从0开始递增的. 如果索引的长度的是N,那么所 ...

  3. python基础教程1:入门基础知识

    写在系列前,一点感悟 没有梳理总结的知识毫无价值,只有系统地认真梳理了才能形成自己的知识框架,否则总是陷入断片儿似的学习-遗忘循环中. 学习方法真的比刻苦"傻学"重要多了,而最重要 ...

  4. 《python基础教程(第二版)》学习笔记 列表/元组(第2章)

    <python基础教程(第二版)>学习笔记 列表/元组(第2章)序列中的下标从0开始x='ABC' ==> x[0]='A', x[1]='B', x[2]='C'负数索引从右边开始 ...

  5. Python基础教程总结(一)

    引言: 一直都听说Python很强大,以前只是浏览了一些博客,发现有点像数学建模时使用的Matlab,就没有深入去了解了.如今Python使用的地方越来越多,最近又在学习机器学习方面的知识,因此想系统 ...

  6. Python基础教程(第2版 修订版) pdf

    Python基础教程(第2版 修订版) 目录 D11章快速改造:基础知识11.1安装Python11.1.1Windows11.1.2Linux和UNIX31.1.3苹果机(Macintosh)41. ...

  7. python基础教程项目五之虚拟茶话会

    python基础教程项目五之虚拟茶话会 几乎在学习.使用任何一种编程语言的时候,关于socket的练习从来都不会少,尤其是会写一些局域网的通信的东西.所以书上的这个项目刚好可以练习一下socket编程 ...

  8. Python基础 第三章 使用字符串(3)字符串方法&本章小结

    字符串的方法非常之多,重点学习一些最有用的,完整的字符串方法参见<Python基础教程(第三版)>附录B. 模块string,虽然风头已小,但其包含了一些字符串方法中没有的常量和函数,故将 ...

  9. (Python基础教程之十二)Python读写CSV文件

    Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...

  10. Python基础教程(第3版)PDF高清完整版免费下载|百度云盘

    百度云盘:Python基础教程(第3版)PDF高清完整版免费下载 提取码:gkiy 内容简介 本书包括Python程序设计的方方面面:首先从Python的安装开始,随后介绍了Python的基础知识和基 ...

随机推荐

  1. ES6对象扩展

    前面的话 随着JS应用复杂度的不断增加,开发者在程序中使用对象的数量也在持续增长,因此对象使用效率的提升就变得至关重要.ES6通过多种方式来加强对象的使用,通过简单的语法扩展,提供更多操作对象及与对象 ...

  2. form表单提交图片禁止跳转

    问题: 最近在做项目时,遇到上传图片需求,且在不跳转的情况下获取到返回信息 思路: 1.  使用ajax发送异步请求,经多次测试,最终以失败告终 2. iframe 禁止跳转(未尝试) 3. 修改fo ...

  3. jsp 重定向技术

    页面重定向之后,request对象的属性全部失效,生成一个新的requeset对象

  4. JSP制作简单登陆

    JSP制作简单登陆界面 运行环境 eclipse+tomcat+MySQL 不知道的可以参考Jsp运行环境--Tomcat 项目列表 这里我先把jsp文件先放在Web-INF外面访问 需要建立的几个文 ...

  5. TypeScript02 方法特性【参数种类、参数个数】、generate方法、析构表达式、箭头表达式、循环

    1 方法的参数 1.1 必选参数 调用方法时实参的个数必须和定义方法时形参在数量和类型上匹配 /** * Created by Administrator on 2017/8/2 0002. */ f ...

  6. Linux 下安装jetty服务器

    jetty和我们通常使用的tomcat一样,是一个开源的servlet容器,特点是轻量易部署,一方面jetty可以作为web容器使用,另一方面也是最一般的方式是jetty以一组jar包的形式发布,所以 ...

  7. nodejs-基础

    01-nodejs介绍 1.什么是nodejs 1.(javascript跑在机器端,服务端)Javascript on the machine 2.(跑在谷歌v8引擎上)A runtime for ...

  8. NYOJ--95--multiset--众数问题

    /* Name: NYOJ--95--众数问题 Date: 20/04/17 16:02 Description: multiset水过 */ #include<set> #include ...

  9. 【MySQL源码】源码安装和启动mysql

    --[MySQL源码]源码安装和启动mysql --------------------------------------2014/08/19 本机环境:ubuntu12.04,fedora-17 ...

  10. Selenium2 (python)

    包名:selenium 支持浏览器:Firefox,InternetExplorerDriver,OperaDriver,Chrome(要使用一种浏览器应下载相应的driver驱动) 一.基本命令 d ...