上一篇:python字符串基础一

下一篇:Python 列表操作简介

序列概览

Python包含6种内置的序列:列表、元组、字符串 、Unicode字符串、buffer对象、xrange对象。在序列中的每个元素都有自己的编号。列表与元组的区别在于,列表是可以修改,而组元不可修改。理论上几乎所有情况下元组都可以用列表来代替。有个例外是但元组作为字典的键时,在这种情况下,因为键不可修改,所以就不能使用列表。

我们先来编写一个列表:

使用方括号括起来,列表元素使用逗号进行分隔:

>>> a = ["hello",100]
>>> a
['hello', 100]
>>>

序列是可以嵌套的:

>>> A =["xiaoming",98]
>>> B =["xiaohong",87]
>>> grade=[A,B]
>>> grade
[['xiaoming', 98], ['xiaohong', 87]]
>>>

下面来介绍一下通用的序列操作。

通用序列操作

所有序列都可以进行如下操作:

  • 索引
  • 分片
  • 检查某个元素是否属于序列成员(成员资格)

并且python提供了一些序列内置函数:

  • 计算序列长度
  • 找出做大元素及做小元素

另外序列操作还有迭代,这个以后介绍。

下面就这些操作做一个介绍

索引

序列的索引

索引即标号,及元素在序列中的编号。这些编号从0开始递增,0表示第一个元素:

>>> world = "Hello Word"
>>> world[0]
'H'
>>> world[3] #第四个元素
'l'
>>>

用法就如C语言的数组一样。在python中比较神奇的是,索引可以是负数:使用负数时,Python会从右边向左边计数,最后一个元素的索引值为-1,为啥不是-0呢?因为会和第一个元素重合:

>>> world = "Hello Word"
>>> world[0]
'H'
>>> world[3]
'l'
>>> world[-1]#从右边开始计数
'd'
>>> world[-2]
'r'
>>>

字符串字面值的索引

字符串字面值可以直接使用索引,不需要定义一个变量来引用这个字符串字面值,这和C语言不一样:

>>> "Hello Word"[1]
'e'
>>>

在函数返回值使用索引

有一些函数的返回值为字符串,有的返回其他的序列,我们可以在函数调用之后使用[]来对返回序列的元素值进行索引。

>>> input("input something:")[1]
input something:Hello word
'e'
>>>

示例小程序

在这个例子中我们使用序列来存储12个月份的单词字符串与每月天数的数字后缀。程序的目的是输入年月日后进行序列索引查找对应的单词并输出结果:


>>>
Year:2015
Month:9
Day:4
4th September 2015
>>>

程序清单1

months =[
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'Octber',
'November',
'December',
]
endings=['st','nd','rd']+17*['th']\
+['st','nd','rd']+7*['th']\
+['st'] year = input('Year:')
month = input('Month:')
day = input('Day:')
print(day+endings[int(day)-1]+' '+months[int(month)-1]+' ' +year)

注意点:

  • 在序列前乘以一个数字x,表示重复序列元素x次并存入序列中:
>>> a = 5*['a','b']
>>> a
['a', 'b', 'a', 'b', 'a', 'b', 'a', 'b', 'a', 'b']
>>>

分片

分片即提取一个范围内的序列,语法是:

序列名(或字符串字面值)[a:b] 提取索引a~b范围内的子序列。

>>> number=[1,2,3,4,5,6,7,8,9,10]
>>> number[1:5]
[2, 3, 4, 5]
>>>

注意点:

  • 范围采用左闭右开,即第一个索引元素包含在分片内,第二个则不包含在分片内。就像C++容器采取的迭代器策略一样。

  • 右索引超出范围时,分片直接取到序列最后一个元素:

>>> number[0:19]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>
  • 左索引比右索引的元素在序列中出现得晚时,分片为空序列:
>>> number[-3:1]
[]
>>>
  • 忽略右索引,分片将直接取到最后一个索引:
>>> number[0:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>
  • 同样的,忽略左索引时:
>>> number[:10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>
  • 自然的,同时忽略两个索引,整个序列都成为分片了:
>>> number[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>

分片的步长

分片的步长指的是,在分片索引标记的范围内,多长的距离取样一个值构成分配。在上面展示的代码中,步长都是为1的,也即范围内所有元素都被取样。我们可以设置分片步长:

number[a

Python 序列通用操作介绍的更多相关文章

  1. python 序列通用操作

    通用序列操作:索引:greeting=hellogreeting[0] 分片:number[1,2,3,4,5,6]number[3:6]number[3:6:1] 序列相加:[1,2,3] + [4 ...

  2. Python序列及其操作(常见)

    python序列及函数入门认识: 0. 我们根据列表.元组和字符串的共同特点,把它们三统称为什么?    序列,因为他们有以下共同点: 1)都可以通过索引得到每一个元素 2)默认索引值总是从0开始(当 ...

  3. 《python基础教程》笔记之 序列通用操作

    索引 序列中的所有元素都是有编号的--从0开始递增.使用负数索引时,Python会从右边,也就是从最后一个元素开始计数,最后一个元素的位置编号是-1.此外,字符串是一个有字符组成的序列,字符串字面值可 ...

  4. Python数据结构之序列及其操作

    数据结构是计算机存储,组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合. 在Python中,最基本的数据结构为序列(sequence).序列中的每个元素都有编号:从0开始递增 ...

  5. python的文件操作及简单的用例

    一.python的文件操作介绍 1.文件操作函数介绍 open() 打开一个文件 语法:open(file, mode='r', buffering=-1, encoding=None, errors ...

  6. Python序列——序列操作

    Python中的序列包括,字符串.列表.元组.本文介绍序列的通用操作. 1. 切片中的None >>> s = 'abcdefg' >>> for i in ran ...

  7. python中序列的操作

    Python中的序列操作 可变对象:列表.字典.集合 不可变对象:数值.字符串.元组.forzenset 1.序列的通用操作 (1)测试元素是否存在 x in S和x not in S,返回True或 ...

  8. Python中实现对list做减法操作介绍

    Python中实现对list做减法操作介绍 这篇文章主要介绍了Python中实现对list做减法操作介绍,需要的朋友可以参考下 问题描述:假设我有这样两个list, 一个是list1,list1 = ...

  9. python连接redis、redis字符串操作、hash操作、列表操作、其他通用操作、管道、django中使用redis

    今日内容概要 python连接redis redis字符串操作 redis之hash操作 redis之列表操作 redis其他 通用操作,管道 django中使用redis 内容详细 1.python ...

随机推荐

  1. 画图解释 SQL join 语句

    转:http://blog.jobbole.com/40443/ 本文由 伯乐在线 - 奇风余谷 翻译.未经许可,禁止转载!英文出处:Jeff Atwood.欢迎加入翻译组. 我认为 Ligaya T ...

  2. BZOJ 2818: Gcd

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 4443  Solved: 1960[Submit][Status][Discuss ...

  3. 10 Things Every Java Programmer Should Know about String

    String in Java is very special class and most frequently used class as well. There are lot many thin ...

  4. jdbc连接数据库总结

    jdbc支持多种数据库,比如说oracle, mysql, mssql,现在总结一下连接各种数据库的相关知识 1,mysql连接,代码如下 Class.forName("com.mysql. ...

  5. poj1190

    生日蛋糕 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 18230 Accepted: 6491 Description 7月1 ...

  6. Prism中使用MEF的例子

    一个基本的例子,没有viewmodel,没有使用Behaviors 大体步骤: 1.创建应用程序 2.使用"Shell"替换"MainWindow"(silve ...

  7. opencv 中对一个像素的rgb值或像素值进行操作的几个常用小办法【转】

    You can access the Image pixels in many ways:1. One using the Inbuilt macro2. One using the pointer ...

  8. Apache POI 实现对 Excel 文件读写

    1. Apache POI 简介 Apache POI是Apache软件基金会的开放源码函式库. 提供API给Java应用程序对Microsoft Office格式档案读和写的功能. 老外起名字总是很 ...

  9. JavaScript高级程序设计笔记 事件冒泡和事件捕获

    1.事件冒泡 要理解事件冒泡,就得先知道事件流.事件流描述的是从页面接收事件的顺序,比如如下的代码: <body> <div> click me! </div> & ...

  10. java并发:线程同步机制之计数器&Exechanger

    第一节 CountDownLatch (1)初识CountDownLatch (2)详述CountDownLatch CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量. ...