数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合;在Python中,最基本的数据结构是序列(sequence),序列中的每个元素被分配一个序列号--即元素的位置,也称为索引。

  python包含6种内建的序列,它们分别是列表、元组、字符串、Unicode字符串、buffer对象和xrange对象。

  本文将重点讲解python通用序列操作。


1.1  索引

1.2  分片

1.3  序列相加

1.4  乘法

1.5  成员资格

1.6  长度、最小值和最大值


1.1  索引(index)

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

example1.1.1:

#coding:utf-8

#define varibles  months
months = {
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'Septemer',
'October',
'November',
'December'
} #A list of number at the end of 1-31
endings =['st','nd','rd']+17*['th']\
+['st','nd','rd'+7*['th']\
+['st'] year = raw_input("Year:")
month = raw_input('Month:')
day = raw_input("Day[1-31]:') month_number = int(month)
day_number = int(day) month_name = months[month_number-1]
ordinal = day + endings[day_number -1] print month_name + ' ' + ordinal +', '+year

执行结果是:

Year:1974
Month:8
Day(1-31):16
August 16th, 1974

1.2  分片(slicing)

  分片操作通过冒号隔开的2个索引实现,第一个索引的元素是包含在分片内的,而第二个则不包含在分片内;

参见代码:

>>>numbers = [1,2,3,4,5]

>>>numbers[1,3]

[2,3]

>>>numbers[-1:0]  #分片中最左边的索引比它右边的晚出现在序列中,结果就是一个空的序列

[]

>>>numbers[-1:]  #

[5]

1.2.1  更大的步长(step length)

  普通的分片中,步长默认为1,通常隐式设置;

  步长为正时,第一个索引小于第二个索引;分片操作时从左往右提取元素,直至最后一个元素;

>>>numbers[0:4:2]

[1,3]

>>>numbers[-4::2]

[2,4]

  步长为负时,第一个索引大于第二个索引;分片操作时从右向左提取元素,直至最后一个元素;

>>>numbers[4:2:-1]

[5,4]

>>>numbers[::-2]

[5,3,1]

1.3  序列相加(concatenation)

  通过“+”运算符可以进行序列的连接操作:

>>>[1,2,3] + [2,4,6]

[1,2,3,2,4,6]

>>>[1,2,3] + "character"

Traceback(innermost last):

 file"<pyshell#2>"line 1.in?

  [1,2,3] + "character"

TypeError:can only concatenate list(not "string") to lst

即:2种相同的序列才能进行级联操作;

1.4  乘法(multiplying)

  通过“*”运算符实现序列的重复操作;

>>>"python"*3

"pythonpythonpython"

注:如果需要初始化一个10个元素的列表,可以使用None内建值;

>>>sequence = [None]*10

>>>sequence

[None,None,None,None,None,None,None,None,None,None]

example1.4.1:

#coding:utf-8

#以正确的宽度在居中的“盒子”内打印一个句子
#注意,整数除法运算符(//)只能在python2.2以后的版本中使用,之前版本中只能使用普通除法
sentence = raw_input("Sentence:")
screen_width = 80
test_width = len(sentence)
box_width = text_width + 6
left_margin = (screen_width - box_width)//2
print ' '*left_margin + '+' + '-'*left_margin +'-'*(box_width-2)+'-'*left_margin + "+"
print ' '*left_margin + '| ' + " "*text_width + " |"
print ' '*left_margin + '| ' + sentence + '|'
print ' '*left_margin + '| ' + " "*text_width + " |"
print ' '*left_margin + '+' + '-'*left_margin +'-'*(box_width-2)+'-'*left_margin + "+"

执行结果是:

sentence:He's a very naughty boy!

      +---------------------------------------------+

           |                |

           | He's a very naughty boy! |

           |                |

      +---------------------------------------------+

1.5  成员资格(permission)

  通过“in”  运算符实现,返回值为布尔值;

>>>"P" in "Python"

True

1.6  长度(len)、最小值(min)和最大值(max)

>>>numbers = [100,34,768]

>>>len(numbers)

3

>>>min(numbers)

34

>>>max(numbers)

768

PS:本人水平有限,有其他意见或建议可联系作者进行修改!

路漫漫其修远兮,吾将上下而求索。。。

python数据结构(一)------序列的更多相关文章

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

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

  2. Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结

    一.概述:Python中两种基本的数据结构是序列和映射,序列包含:可变的列表和不可变的元组:而当序列不够用时就出现了映射:字典.列表中的元素是可以变化的,元组里面的元素一旦初始化后就不可更改.列表和元 ...

  3. Python数据结构和类型--解压序列赋值多个变量

    Python数据结构和类型 1.1 解压序列赋值给多个变量 现在有一个包含N个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给N个变量? 解决思路:先通过简单的解压赋值给多个变量,前提是变量的数 ...

  4. Python基础:序列(列表、元组)

    一.概述 列表(list)是由一个个 Python对象 组成的序列.其中,Python对象 可以是任何类型的对象,包括 Python标准类型(数值.字符串.列表.元组和字典)以及 用户自定义类型(类) ...

  5. Python学习三---序列、列表、元组

    一.序列 1.1.序列概念 pythn中最基本的数据结构是序列(sequence). 序列中每个元素被分配一个序号-元素索引,第一个索引是0,第二个是1,以此类推.类似JAVA中数组和集合中的下标. ...

  6. 10.python中的序列

    本来说完字符串.数字.布尔值之后,应该要继续讲元祖.列表之类的.但是元祖和列表都属于序列,所以有必要先讲讲python的序列是什么. 首先,序列是是Python中最基本的数据结构.序列中的每个元素都分 ...

  7. Python数据结构与循环语句

    # Python数据结构与循环语句:   首先编程是一项技能,类似跑步,期初不必在意细节,能使用起来就行,等学的游刃有余了再回过头来关注细节问题也不迟.  关于买书: 学会python之后,才需要买书 ...

  8. Python数据结构之一——list(列表)

    Python版本:3.6.2  操作系统:Windows   作者:SmallWZQ Python包含6种常见的内建序列.它们分别是列表.元祖.字符串.Unicode字符串.buffer(memory ...

  9. python数据结构之直接插入排序

    python数据结构之直接插入排序 #-*-encoding:utf-8-*- ''' 直接插入排序: 从序列的第二个元素开始,依次与前一个元素比较,如果该元素比前一个元素大, 那么交换这两个元素.该 ...

随机推荐

  1. 分布式事务 & 两阶段提交 & 三阶段提交

    可以参考这篇文章: http://blog.csdn.net/whycold/article/details/47702133 两阶段提交保证了分布式事务的原子性,这些子事务要么都做,要么都不做. 而 ...

  2. 深度学习caffe:Ubuntu16.04安装指南(1)

    caffe [CPU ONLY] 2017-01-15 最简单的安装配置方式: 不用GPU加速,使用OPENCV2.4图像库, 这是根据官方教程(链接如下)简化而得到. Ubuntu 16.04 or ...

  3. Linux之文件压缩与解压

    文件压缩与解压 1.tar命令 tar命令可以为Linux的文件和目录创建档案. 利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件.tar最初被用来 ...

  4. [转python 父类可以调用子类的方法

    问题描述:我也是在读500 Line 里满的DBDB 的代码时发现的,python的父类可以调用子类的方法,这跟平常习惯的理解方式很不一样,所以就查了下原因,记录如下:   1.现象:最近使用到了So ...

  5. thinkPHP 模板中变量的使用

    一.变量输出                1.标量输出(普通)        2.数组输出                {$name[1]}                {$name['k2'] ...

  6. C++写时钟表

    time函数的运用,输出是没输换行,在流中,就什么的输不出,可以用清流函数,fflush(stdout) 代码 #include<iostream>#include<cstdio&g ...

  7. js架构设计模式——前端MVVM框架设计及实现(一)

    前端MVVM框架设计及实现(一) 最近抽出点时间想弄个dom模块化的模板引擎,不过现在这种都是MVVM自带的,索性就想自己造轮子写一个简单的MVVM框架了 借鉴的自然还是从正美的avalon开始了,我 ...

  8. hcharts中文网 一个js图表库

    http://www.bossidc.com/info/gongju/2013/0717/2133.html   hcharts源码包下载 http://www.hcharts.cn/demo/hig ...

  9. GCD教程(一):基本概念

    在网上看到关于GCD的一个很不错的教程,这里做一下转载 原帖地址:http://www.dreamingwish.com/dream-2012/of-of-of-of-gcd-introduced-1 ...

  10. TCP协议滑动窗口(一)——控制数据传输速率

    窗口大小:TCP头中一个16位的域,表示当前可用接受缓冲区大小.在每个TCP对等段连接初始化时,告诉对方自己的窗口大小(不一定是满额,假如满额65201字节,可能暂时通告5840字节).若客户端接受数 ...