Python序列(Sequence)
Sequence是Python的一种内置类型(built-in type),内置类型就是构建在Python Interpreter里面的类型,三种基本的Sequence Type是list(表),tuple(定值表,或翻译为元组),range(范围)。可以看作是Python Interpreter定义了这样三个class。
字符串也是一种序列
1,list,表
Python有一系列的复合数据类型,其中最多才多艺的就是list
class list([iterable])
list用方括号括起来,并且用逗号分隔,成员的类型可以是不一样的,但一般是一种类型。
1.1 list object的构建
>>> list = []
>>> list = [1,3]
>>> list
[1, 3]
还可以这样构建
>>> list() # empty list
[]
>>> [x for x in range(11)] # [x for x in iterable]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list((3,5,6)) # list(iterable)
[3, 5, 6]
1.2,改变list元素值
list和string不一样的是,string是不可变(immutable)的类型,list是可变的(mutable),可以对list整体或一部分进行改变
>>> list = [list, 5]
>>> list
[[1, 3], 5]
>>> list[1] = 6
>>> list
[[1, 3], 6]
可以对list进行“切片”slice,得到一个子list,也可以对“切片”进行赋值,改变list
范围引用的语法是[下限:上限:步长],默认步长是1,从前数下标从0开始,从后数下标从-1开始
>>> list = [1,2,3,4,5]
>>> list[2:4]
[3, 4]
>>> list[-3:]
[3, 4, 5]
对切片进行赋值,改变list
>>> list
[1, 2, 3, 4, 5]
>>> list[3:] = [5,4]
>>> list
[1, 2, 3, 5, 4]
从上面可一看到,对于改变list内容的操作,如赋值,都没有打印结果,也就是表达式返回的None常量。这是Python对可变数据结构(mutable Data Structure)的设计原则。
2,tuple
tuple是不可变的(immutable)
class tuple([iterable])
tuple的构建
seq = () 或 seq = tuple() #构建empty tuple
seq = (4,) 或 4, #构建只有一个元素的tuple (4),逗号是必不可少的,不然会返回数字4
seq = (3,4,5) 或 seq = 3,4,5
seq = tuple([3,4,5]) # 生成 (3,4,5)
iterable可以是任何支持iteration的Sequence,Container。上面我们使用的参数是list [3,4,5],也可以就是用tuple (3,4,5)
对于tuple来说,重要的是逗号",",而不是括号,从上面我们可以看到括号没有歧义可以省去,但是有些地方必须要,比如:
f(a,b,c)表示这个函数接受三个参数
而f((a,b,c))表示这个函数接受一个参数,这个参数是一个三元的tuple。
tuple是不可被赋值的,所以tuple常用来做不同type(异质)的元素的序列集合,而list就常用来做相同type(同质)的元素集合。
3,range
range也是一种类型(type),它是一个数字的序列(s sequence of numbers),而且是不可变的,通常用在for循环中
class range(stop)
class range(start, stop [, step])
对于第一种构造方式,start默认值为0,step默认值为1
当step为正时,一个range的元素值为r[i] = start + i * step 且 r[i] < stop; step为负时,r[i] > stop
>>> range(6)
[0, 1, 2, 3, 4, 5]
>>> tuple(range(0,-10,-2))
(0, -2, -4, -6, -8)
4.多重赋值(multiple assignment)
多重赋值就是这样的赋值表达式。
t = a,b,c
a,b,c = t
而多重赋值本质就是tuple packing (元组打包)和 Sequence unpacking(序列解包)。
>>> t = a, b, c #这就是tuple packing,按照tuple的构建的语法,我们知道这里t肯定是个tuple。
>>>a, b, c = t #这就是Sequence unpacking,这里t只要是三元的Sequence就可以了,不一定是tuple,如果t不是三元的,会抛出一个ValueError异常。
6. 要得到一个Sequence的长度
用Python的内置函数 len(). 不仅Sequence, Dictionary的长度也是用len()
-----------------
参考:
http://www.cnblogs.com/vamei/archive/2012/05/28/2522677.html Vamei的博客
http://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range Python文档,内置类型Sequence
http://docs.python.org/3/tutorial/datastructures.html#tuples-and-sequences Python文档,tutorial
Python序列(Sequence)的更多相关文章
- 【笔记3-31】Python语言基础-序列sequence
序列sequence 可变序列 列表 list 字典 不可变序列 字符串 str 元祖 tuple 通过索引修改列表 del 删除元素 del my_list[2] 切片赋值只能是序列 .insert ...
- 【Python⑤】python序列---list和tuple
sequence 序列 sequence(序列)是一组有顺序的对象的集合.序列可以包含一个或多个元素,也可以没有任何元素. 我们之前所说的基本数据类型,都可以作为序列的对象.对象还可以是另一个序列.序 ...
- python学习笔记:python序列
python序列包括字符串.列表和元组三部分,下面先总的说一下python序列共有的一些操作符和内建函数. 一.python序列 序列类型操作符 标准类型的操作符一般都能适用于所有的序列类型,这里说一 ...
- 『无为则无心』Python基础 — 16、Python序列之字符串的下标和切片
目录 1.序列的概念 2.字符串的下标说明 3.字符串的切片说明 1.序列的概念 序列sequence是Python中最基本的数据结构.指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通 ...
- Oracle新表使用序列(sequence)作为插入值,初始值不是第一个,oraclesequence
Oracle新表使用序列(sequence)作为插入值,初始值不是第一个,oraclesequence 使用oracle11g插入数据时遇到这样一个问题: 1 --创建测试表-- 2 CREATE T ...
- Oracle序列(Sequence)创建、使用、修改、删除
Oracle对象课程:序列(Sequence)创建.使用.修改.删除,序列(Sequence)是用来生成连续的整数数据的对象.序列常常用来作为主键中增长列,序列中的可以升序生成,也可以降序生成.创建序 ...
- 序列sequence中的cache问题
Oracle中序列Sequence的创建语法如下: CREATE SEQUENCE [ schema. ] sequence [ { INCREMENT BY | START WITH } integ ...
- python 序列的方法
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在快速教程中,我们了解了最基本的序列(sequence).回忆一下,序列包含有定值 ...
- Python序列的方法(转)
在快速教程中,我们了解了最基本的序列(sequence).回忆一下,序列包含有定值表(tuple)和表(list).此外,字符串(string)是一种特殊的定值表.表的元素可以更改,定值表一旦建立,其 ...
- [Python笔记][第二章Python序列-复杂的数据结构]
2016/1/27学习内容 第二章 Python序列-复杂的数据结构 堆 import heapq #添加元素进堆 heapq.heappush(heap,n) #小根堆堆顶 heapq.heappo ...
随机推荐
- 利用RunTime解决由NSTimer导致的内存泄漏
NSTimer使用场景 用NSTimer来实现每隔一定时间执行制定的任务,例如最常见的广告轮播图,使用NSTimer实现这个功能很简单代码如下 NSTimer *_timer; _timer = [N ...
- POJ 1976 A Mini Locomotive【DP】
题意:给出一列火车,可以由三个火车头拉,每个火车头最多拉m节车厢(这m节车厢需要保持连续),再给出n节车厢,每节车厢的人数,问最多能够载多少人到终点. 可以转化为三个长度相等的区间去覆盖n个数,使得这 ...
- mysql免安装版安装
MySQL是一个小巧玲珑但功能强大的数据库,目前十分流行.但是官网给出的安装包有两种格式,一个是msi格式,一个是zip格式的.很多人下了zip格式的解压发现没有setup.exe,面对一堆文件一头雾 ...
- BZOJ 3668 起床困难综合症
按位贪心. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm& ...
- mysql:mysql_query(): Unable to save result set
解决方式 方式1: 原因:数据表索引损坏 方案:使用repair table 表名; 方式2: 原因:打开表的数据量太大,内存不够. 方案:配置my.ini 调整内存能解决
- 虚拟机安装centos 6 报错Erro processing drive
错误提示: Error processing drive: pci-0000:00:10-scsi-0:0:0:0 20480MB VMware,VMware Virtual S This devic ...
- Struts2实现Preparable接口和【struts2】继承ActionSupport类
Struts2实现Preparable接口 实现preparable接口,实现public void prepare() throws Exception 方法.当你访问某问action指定方法之前, ...
- Java中原子类的实现
Java提供的原子类是靠sun基于CAS实现的,CAS是一种乐观锁.关于乐观锁与悲观锁. 原子变量类相当于一种泛化的volatile变量,能够支持原子的和有条件的读-改-写操作.AtomicInteg ...
- SmartWeatherAPI_Lite_WebAPI C# 获取key加密
中国气象局面向网络媒体.手机厂商.第三方气象服务机构等用户,通过 web 方式提供数据气象服务的官方载体. 在一周前已经申请到appid,但是苦于没有C#版的key 的算法,一直验证不通过,经过几天查 ...
- CSS使jsp图片旋转90度
<style > img{ margin:100px auto 0; -moz-transform:rotate(-90deg); -webkit-transform:rotate(-90 ...