Python基础---序列对象

一.序列简介

  • 数据结构是通过某种方式组织在一起的元素的集合。
  • 容器(Container)是一种Python的数据结构,基本上是包含其他对象的任意对象。序列和映射(如字典)是两类主要的容器。集合(Set)也是容器类型。
  • 序列是最基本的数据结构,是通过对数据元素进行编号将它们组织在一起的数据元素的集合。
  • 成员是有序排列的,可以通过小标偏移量访问到它的一个或者几个成员,这类python类型统称为序列.
  • Python有6中种内建的序列:列表、元组、字符串、Unicode字符串、buffer对象、xrange对象。

 官方文档:

翻译:
一个可迭代对象,它支持通过__getitem__()特殊方法使用整数索引高效地访问元素,并定义了一个__len__()方法,该方法返回序列的长度。一些内置的序列类型是list、str、tuple和bytes。注意,dict也支持__getitem__()和__len__(),但它被认为是一个映射,而不是一个序列,因为查找使用任意不可变键,而不是整数。

collections.abc.Sequence抽象基类定义了一个比__getitem__()和__len__()更丰富的接口,增加了count(),index(),__contains__(),和__reversed__()。可以使用register()显式注册实现此扩展接口的类型。

二.序列的分类

 注:

  • 容器序列和扁平序列的区别在于,扁平序列里面的元素类型都是一样的
  • array模块是python中实现的一种高效的数组存储类型。它和list相似,但是所有的数组成员必须是同一种类型,在创建数组的时候,就确定了数组的类型
  • deque类是python标准库collections模块中的一项,它提供了两端都可以操作的序列,这意味着,在序列的前后你都可以执行添加或删除操作。

三. 通用序列操作

1.索引(Indexing)

•  序列中的每个元素被分配一个序号,即元素的位置,称为索引。以正数第一个元素的索引为0,正数第二个元素的索引为1,倒数第一个元素的索引为-1,以此类推。

2.分片(Slicing)

•   分片使用2个冒号分隔的3个数字来完成:[srart:end:step]

•   第一个数字表示切片开始位置(默认为0),第二个数字表示切片截止(但不包含)位置(默认为列表长度),第三个数字表示切片的步长(默认为1)

•   可以使用切片来截取列表中的任何部分,得到一个新列表,也可以通过切片来修改和删除列表中部分元素,甚至可以通过切片操作为列表对象增加元素。

•   与使用下标访问列表元素的方法不同,切片操作不会因为下标越界而抛出异常,而是简单地在列表尾部截断或者返回一个空列表,代码具有更强的健壮性。

•   step为正时,Python会从序列头部开始向右提取元素,直到最后一个元素, start索引的元素应在end索引的元素左边,否则将返回一个空序列;step为负时, Python会从序列尾部开始向左提取元素,直到第一个元素,这时start索引的元素应在end索引的元素右边,否则将返回一个空序列。step不能为0。

•   当step省略时可以省略最后一个冒号或置空最后一个索引

[start:end]或[start:end:]

•   当start或end省略时要置空对应索引

[start:]或[:end]或[:]

•切片可以返回列表的浅拷贝a[:]==a

• a[:]将得到包含a所有元素的分片,是一种很有效率的复制整个列表的方法

3.加(Adding)

•   序列连接操作,只有相同类型的序列才能进行连接操作

•   实质上是创建了一个新序列并将原序列中的元素和新元素依次复制到新序列的内存空间

4.乘(Multiplying)

•   序列重复操作,用数字x乘以一个序列会产生新的序列,新的序列是原序列的重复

5.成员资格

• 使用in运算符(布尔运算符)检查一个元素是否在序列中,返回布尔值True或False

>>> 2 in [2,3,4]

True

>>> [2] in [2,3,4]

False

>>>‘P’in ‘PYTHON’

True

6.内建函数

•   len():返回序列中的元素个数

•   max()、 min():返回序列中的最大或最小元素

7.迭代(iteration)

8.赋值、浅拷贝与深拷贝

①直接赋值:其实就是对象的引用(别名)。

b = a: 赋值引用,a 和 b 都指向同一个对象。

②浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。

b =a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。

如果原地修改子对象,父对象也会改变。

③深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。

原文地址:https://www.cnblogs.com/nlkblog/p/11532204.html

时间: 2024-10-08 15:40:26

Python基础---序列对象的相关文章

2015/8/28 Python基础(2):对象

Python用对象模型来存储数据.构造任何类型的值都是一个对象.Python对象都有是三个特性:身份,类型和值 身份是每个对象的唯一身份标识.任何对象都可以用内建函数id()来得到身份.如: >>> s = 1 >>> id(s) 38249176 身份可以认为是该对象的地址. 类型是数据以何种方式保存,可以进行怎样的操作,遵循怎样的规则.可以使用内建函数type()来查看. 值就是对象的数据项. 上面三个特性在对象创建时被赋值,除值以外其他特性都是只读.对象的类型是可

python基础——函数对象和闭包

关于函数对象和闭包 闭包(closure)是函数式编程的重要的语法结构.不同的语言实现闭包的方式不同.Python以函数对象为基础,为闭包这一语法结构提供支持的 (我们在特殊方法与多范式中,已经多次看到Python使用对象来实现一些特殊的语法).Python一切皆对象,函数这一语法结构也是一个对象.在函数对象中,我们像使用一个普通对象一样使用函数对象,比如更改函数对象的名字,或者将函数对象作为参数进行传递. 一.函数对象: 1.函数可以当参数传递 示例: #把函数当成参数传递 def foo()

python基础---序列操作

1.索引(indexing) 在序列中每个元素都会分配1个数字,从左至右,从数字0开始(-0和0一样,指向左起第一个元素),正整数表示左起元素位,例如 例:greeting='Hello' [0] 'H' 例:greeting='Hello' greeting[-0] 'H' 例:greeting='Hello' greeting[-1] 'o' 2.切片(slicing) 索引是对单个元素进行访问,分片是对一定范围内的元素进行访问,分片既支持正数索引,也支持负数索引.分片操作的实现需要提供2个

python基础03 序列

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 谢谢thunder424纠错 sequence 序列 sequence(序列)是一组有顺序的元素的集合 (严格的说,是对象的集合,但鉴于我们还没有引入“对象”概念,暂时说元素) 序列可以包含一个或多个元素,也可以没有任何元素. 我们之前所说的基本数据类型,都可以作为序列的元素.元素还可以是另一个序列,以及我们以后要介绍的其他对象. 序列有两种:tuple(定值表: 也有翻译为元组

python基础教程_学习笔记8:序列_练习与总结_1

序列_练习与总结 每次处理一个字符 任务: 用每次处理一个字符的方式处理字符串. 方案: 可以创建一个列表,列表的子项是字符串的字符.python实际上并没有一个特别的类型来对应"字符"并以此和字符串区分开来.可以调用内建的list,用字符串作为参数: thelist=list(thestring) 也可以不创建一个列表,直接用for语句完成对该字符串的循环遍历: for c in thestring: do_something_with(c) 或者使用列表推导中的for来遍历: re

python基础教程_学习笔记:序列-1

序列 数据结构:通过某种方式组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构. python中,最基本的数据结构是序列. 序列中的每个元素被分配一个序号--即元素的位置,也称为索引.第一个索引是0,第二个是1,以此类推. 序列概览 python包含6种内建的序列:列表.元组.字符串.Unicode字符串.buffer对象和xrange对象. 列表和元组的主要区别在于,列表可以修改,元组不能. 使用后者的理由通常是技术性的,它与python内部的运作方式有关.这也

Python基础教程之List对象 转

Python基础教程之List对象 时间:2014-01-19    来源:服务器之家    投稿:root 1.PyListObject对象typedef struct {    PyObject_VAR_HEAD    PyObject **ob_item;    Py_ssize_t allocated;} PyListObject; PyObject_VAR_HEAD中的obsize表示该list对象含有的元素个数, 而allocated表示该list对象占用的内存空间. ob_item

python基础教程_学习笔记2:序列-2

序列-2 通用序列操作 序列相加 通过加号对列表进行连接操作: 列表 >>> [1,3,4]+[2,5,8] [1, 3, 4, 2, 5, 8] 字符串 >>> '134'+'258' '134258' 元组 >>> (1,2,3)+(2,5,8) (1, 2, 3, 2, 5, 8) 元素数据类型不同的列表 >>> [[1,3],[3,9]]+[[2,2],'abc'] [[1, 3], [3, 9], [2, 2], 'abc'

python基础(类、对象、包)完整的总结

python基础(类和对象.包)类和对象对象是看的见摸的着的类是模板对象需要类才能创建出来类的构成(三个部分)类的名称:类名类的属性:一组数据类的方法:允许进行操作的方法(行为)class 类名():def添加方法class Cat():def run(self):print("cat is running")xiaobai = Cat()xiaobai.run()xiaobai.name = "小白"xiaobai.age = 40类的属性属性就是变量一个类可以创