python数据结构(一)------序列
数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合;在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数据结构(一)------序列的更多相关文章
- Python数据结构之序列及其操作
数据结构是计算机存储,组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合. 在Python中,最基本的数据结构为序列(sequence).序列中的每个元素都有编号:从0开始递增 ...
- Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结
一.概述:Python中两种基本的数据结构是序列和映射,序列包含:可变的列表和不可变的元组:而当序列不够用时就出现了映射:字典.列表中的元素是可以变化的,元组里面的元素一旦初始化后就不可更改.列表和元 ...
- Python数据结构和类型--解压序列赋值多个变量
Python数据结构和类型 1.1 解压序列赋值给多个变量 现在有一个包含N个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给N个变量? 解决思路:先通过简单的解压赋值给多个变量,前提是变量的数 ...
- Python基础:序列(列表、元组)
一.概述 列表(list)是由一个个 Python对象 组成的序列.其中,Python对象 可以是任何类型的对象,包括 Python标准类型(数值.字符串.列表.元组和字典)以及 用户自定义类型(类) ...
- Python学习三---序列、列表、元组
一.序列 1.1.序列概念 pythn中最基本的数据结构是序列(sequence). 序列中每个元素被分配一个序号-元素索引,第一个索引是0,第二个是1,以此类推.类似JAVA中数组和集合中的下标. ...
- 10.python中的序列
本来说完字符串.数字.布尔值之后,应该要继续讲元祖.列表之类的.但是元祖和列表都属于序列,所以有必要先讲讲python的序列是什么. 首先,序列是是Python中最基本的数据结构.序列中的每个元素都分 ...
- Python数据结构与循环语句
# Python数据结构与循环语句: 首先编程是一项技能,类似跑步,期初不必在意细节,能使用起来就行,等学的游刃有余了再回过头来关注细节问题也不迟. 关于买书: 学会python之后,才需要买书 ...
- Python数据结构之一——list(列表)
Python版本:3.6.2 操作系统:Windows 作者:SmallWZQ Python包含6种常见的内建序列.它们分别是列表.元祖.字符串.Unicode字符串.buffer(memory ...
- python数据结构之直接插入排序
python数据结构之直接插入排序 #-*-encoding:utf-8-*- ''' 直接插入排序: 从序列的第二个元素开始,依次与前一个元素比较,如果该元素比前一个元素大, 那么交换这两个元素.该 ...
随机推荐
- 今天学习了下,如何破解wifi
破解了隔壁的wif,得罪了,哥哥要蹭网一段时间. 主要思路:安装linux环境.这里我选择了虚拟机加cdlinux .运行里面的min抓得握手包,然后淘宝花10元跑下包,因为自己的电脑不行,跑费时间太 ...
- 转载自前端开发:CSS设置滚动条样式
浏览器默认的滚动条样子太过屌丝了,得自己动手整整.记得IE浏览器有几个设置滚条的样式,不过比较鸡肋,只能设置颜色之类的,而且webkit下面也不支持.无意间看到网易邮箱的滚动条样子很好看,一开始以为是 ...
- mybatis:"configuration" must match "(properties?,settings?,typeAliase.....
在运行mybatis配置文件的时候,出现错误: mybatis:"configuration" must match "(properties?,settings?,ty ...
- mysql中游标的使用案例详解(学习笔记)
1.游标是啥玩意?简单的说:游标(cursor)就是游动的标识,啥意思呢,通俗的这么说,一条sql取出对应n条结果资源的接口/句柄,就是游标,沿着游标可以一次取出一行.我给大家准备一张图: 2.怎么使 ...
- 黄聪:VPS用轻松备份工具备份Wordpress,文件夹通配符
db;log;wp-admin;wp-includes;temp;upgrade;twentyfourteen;twentyfifteen;twentysixteen;twentythirteen;t ...
- social relation & recommender system
由于社交网络盛行,现在许多关于推荐系统的研究都考虑了如何使用social relation来改进推荐系统.虽然有很多论文都成功的使用social relation改进了推荐效果,然而,也有一些尝试失败 ...
- Velocity教程
Velocity 语法(转) 一.基本语法 1."#"用来标识Velocity的脚本语句,包括#set.#if .#else.#end.#foreach.#end.#iinclud ...
- MongoDB_GridFS_存储文件
GridFS mongoDB除了保存各种文档(JOSN结构)外还能够保存文件.GridFS规范提供了一种透明机制,可以将一个大文件分割成为多个较小的文档,这样的机制允许我们有效的保存大文件对象,特别对 ...
- C#版--简单工厂模式
为什么要用设计模式? 1.设计模式是前人根据经验总结出来的,使用设计模式,就相当于是站在了前人的肩膀上. 2.设计模式使程序易读.熟悉设计模式的人应该能够很容易读懂运用设计模式编写的程序. 3.设计模 ...
- AngularJS的五个超酷特性
AngularJS是一个超棒的javascript框架,不单单对于开发人员来说非常有吸引力,对于UI设计师来说也同样出色.在这篇教程中,我们将简单的介绍AngularJS几个重量级必备特性,并且介绍它 ...