上一篇: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. git push时错误提示的解决办法 By default, updating the current branch in a non-bare repository error: is denied,

    在使用git将客户端的修改push到服务器上的时候,出现无法push,提示和stackoverflow上的http://stackoverflow.com/questions/2816369/git- ...

  2. slice,substr和substring的区别

    首先,他们都接收两个参数,slice和substring接收的是起始位置和结束位置(不包括结束位置),而substr接收的则是起始位置和所要返回的字符串长度.直接看下面例子: var test = ' ...

  3. 关于codeMirror插件使用的一个坑

    codeMirror插件可以做语法高亮渲染,但它操作过程是这样的:先从 textarea中读取值放到codemirror动态生成的div中,根据textarea中的换行个数确定行数,根据正则表达来高亮 ...

  4. php进阶函数

    1,对文件的操作,确保多个进程可以同时读写一个文件(flock函数) flock($hamdle,int $operator) operator的取值,LOCK_SH(共享锁定,读取程序),LOCK_ ...

  5. HTML5商城开发一 楼层滚动加载数据

    对于楼层加载在以前只是个想法,从来没实现过,刚好项目中碰到,再此总结一下 场景:HTML5,局部商品列表信息滚动(局部滚动条) 1.通过jq设置subCategoryScroll的高度为屏幕显示高度( ...

  6. R统计分析处理

    [翻译]Awesome R资源大全中文版来了,全球最火的R工具包一网打尽,超过300+工具,还在等什么? 阅读目录 0.前言 1.集成开发环境 2.语法 3.数据操作 4.图形显示 5.HTML部件 ...

  7. TinyFrame升级之八:实现简易插件化开发

    本章主要讲解如何为框架新增插件化开发功能. 在.net 4.0中,我们可以在Application开始之前,通过PreApplicationStartMethod方法加载所需要的任何东西.那么今天我们 ...

  8. Ehcache 整合Spring 使用页面、对象缓存

    Ehcache 整合Spring 使用页面.对象缓存 Ehcache在很多项目中都出现过,用法也比较简单.一 般的加些配置就可以了,而且Ehcache可以对页面.对象.数据进行缓存,同时支持集群/分布 ...

  9. Redirect和Dispatcher 区别

    使用forward是服务跳转,浏览器不知道它所请求的具体资源来源,浏览器的地址栏不会变:使用redirect,服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL ...

  10. 解决 未能从程序集“System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载

    先安装了 IIS ,再安装了 .net framework4.0 ,这样一来就要在cmd下注册.net framework4.0 步骤 第一步:修改配置文件 %windir%/system32/ine ...