`
canofy
  • 浏览: 828782 次
  • 性别: Icon_minigender_1
  • 来自: 北京、四川
社区版块
存档分类
最新评论

python学习之类型和对象

阅读更多
序列是由非负整数索引的对象的有序集合。它包括字符串、Unicode字符串、列表、元组、xrange对象以及缓冲区对象。字符串和缓冲区对象是字符序列,xrange对象是整数的序列,列表和元组是任意Python对象的序列。字符串、Unicode字符串及元组是不可变序列,列表是可变序列,允许插入,删除,替换元素等操作。缓冲区对象将在本节后面详细描述。

Table 3.2列出所有序列对象均支持的操作及方法。序列 s 中的元素 i 使用索引运算符 s[i] 来访问,通过切片运算符 s[i:j] 可以得到一个序列的子序列(这些运算符在第四章有详细介绍)。内建函数 len(s) 可以返回任意序列 s 的长度。你还能使用内建函数 min(s) 和 max(s) 来获得一个序列的最大值和最小值。不过,这两个函数必须使用在元素可排序的序列中(典型的可排序序列是数值和字符串)。

除此之外,列表还支持Table 3.4中的方法。内建函数 list(s) 把可以把任意一个序列对象转换为一个列表。如果 s 本身是一个列表,这个函数就创建一个 s 的浅拷贝。 s.append(x) 方法可以在列表的末尾加入一个元素 x。 s.index(x) 方法在列表中查找值 x 第一次出现时的索引,若没有找到就引发一个ValueError异常。同样地,s.remove(x)方法删除第一次出现的值 x。 s.extend(t)方法通过将链表 t 的所有元素添加到 s 的末尾来扩充列表s。 s.sort()方法会将列表中的元素进行排序,该方法接受自定义比较函数,自定义比较函数必须有两个参数,若参数1小于参数2,则返回-1,若参数1等于参数2,返回0,否则就返回1。 s.reverse()方法反转列表中的所有元素。sort()和reverse()方法都是直接操作列表中元素并返回None。
s [i ]          返回序列s的元素i
s [i :j ]       返回一个切片
len(s )         序列中元素的个数
min(s)          s 中的最小值
max(s)          s 中的最大值
s [i] = v       给某个元素赋新值
s [i:j] = t     用 序列 t 中的所有元素替换掉 s 序列中的索引从 i 至 j 的元素。
del s[i]        删除序列 s 中索引为 i 的元素。
del s [i :j ]   删除序列 s 中的索引从 i 至 j 的元素
list(s )                把序列s转换为一个列表
s.append(x)             把一个元素添加到列表的结尾,相当于` s[len(s):] = [x]`
s.extend(t)             将链表 t 的所有元素添加到 s 的末尾来扩充列表 s,相当于 `s[len(s):] = t`
s.count(x)              返回值 x 在列表 s 中出现的次数
s.index(x)              返回列表s中第一个值为 x 的元素的索引值
s.insert(i,x)           在 s[i] 前插入一个元素 x
s.pop([i])              返回 s[i] 的值并将 s[i] 元素从列表中删除。如果 i 被省略,` s.pop()` 就对最后一个元素进行操作。
s.remove(x )            删除列表中值为 x 的第一个元素
s.reverse()             翻转 s 中的全部元素
s.sort([cmpfunc ])      对列表 s 中的元素进行排序,cmpfunc 是一个可选的比较函数



Python拥有两种字符串类型。标准字符串是单字节字符序列,允许包含二进制数据和嵌入的null字符。 Unicode 字符串是双字节字符序列,一个字符使用两个字节来保存,因此可以有最多65536种不同的unicode字符。尽管最新的Unicode标准支持最多100万个不同的字符,Python现在尚未支持这个最新的标准。

标准字符串和Unicode字符串都支持表 3.5中的方法。虽然这些方法都是用于操作一个字符串实例,但所有的字符串方法都不会改变原始字符串。它们有的返回一个新得字符串,如 s.capitalize(), s.center(), s.expandtabs()。有的返回True或者False,如特征测试方法 s .isalnum() 和 s .isupper(),值得一提的是,这些方法当字符串长度为零时返回False。 s .find()、 s .rfind()、s .index()、 s .rindex() 方法被用来在 s 中寻找一个子串,如果找到子串,这些函数都返回s的整数索引值。 当找不到子串时,find()方法返回-1,而index()方法则引发一个 ValueError 异常。有很多数字符串方法接受两个可选的参数:start 和 end ,用于指定 s 中开始位置和结束位置的索引。s.translate()方法根据一个字典来转换原始字符串,该函数在附录A中的 string模块中有详细描述。 s.encode()` 方法用来将字符串转换为指定的字符集,如'ascii'、 'utf-8' 或 'utf-16'等。这个方法主要用于将 Unicode字符串转换为适合输入输出的字符编码,关于此方法的的详细介绍在第九章--输入和输出。要了解更多关于字符串方法的细节请参阅附录A中的 string 模块。

内建函数range([i,]j[,stride])建立一个整数列表,列表内容为k(i <= k < j)。第一个参数i和第三个参数stride是可选的,默认值分别为 0 和 1 。内建函数xrange([i,]j[,stride])与 range 有相似之处,但xrange返回的是一个不可改变的XRangeType对象。这是一个迭代器,也就是只有用到那个数时才临时通过计算提供值。当 j 值很大时,xrange能更有效地利用内存。XRangeType提供一个方法 s.tolist(),它可以将自己转换为一个列表对象返回。

缓冲区对象将内存的一个连续区域模拟为一个单字节字符序列。Python没有直接创建缓冲区对象的语句,你可以使用内建函数buffer(obj[,offset[,size]])来创建此类对象。 缓冲区对象与对象 obj 共享相同的内存,对于字符串切片操作或者其他字节数据操作来说,这样会有非常高的效率。另外, 缓冲区对象还可以用来访问其他Python类型储存的原始数据,比如array模块中的数组、 Unicode字符串等。缓冲器对象是否可变,取决于 obj 对象。

映射类型用来表示通过关键字索引的任意对象的集合。和序列不同, 映射类型是无序的。映射类型可以使用数字、字符串、或其他不可变对象来索引。映射类型是可变类型。

字典是唯一的内建的映射类型。可以使用任何不可变的对象作为字典的关键字(如字符串、数字、元组等)。列表、字典、及包含可变对象的元组不可以作为关键字。(字典类型需要关键字的值保持不变)

使用索引运算符m[k](k为关键字)可以访问映射对象 m 中索引为 k 的元素。如果映射对象中没有 k 这个关键字,则引发KeyError异常。 len(m)函数返回一个映射对象的元素个数。

方法                                    描述
s.capitalize()                          第一个字母变大写
s.count(sub [,start [,end ]])           子串sub出现的次数
s.encode([encoding [,errors ]])         改变字符串的编码                
s.startswith(prefix [,start [,end ]])   检查字符串的开头是否为prefix
s.endswith(suffix [,start [,end ]])     检查字符串的结尾是否是suffix       
s.expandtabs([tabsize ])                将制表符转换为一定数量的空格
s.find(sub [,start [,end ]])            返回子串 sub 首次出现的位置或者 -1
s.rfind(sub [,start [,end ]])           返回子串 sub 末次出现的位置或者 -1
s.index(sub [,start [,end ]])           返回子串 sub 首次出现的位置或者引起异常
s.rindex(sub [,start [,end ]])          返回子串 sub 末次出现的位置或者引发异常
s.isalnum()                             字符是否都为字母或数字
s.isalpha()                             字符是否都为字母
s.isdigit()                             字符是否都为数字
s.islower()                             字符是否都为小写
s.isspace()                             字符是否都为空白
s.istitle()                             检查字符是否为标题格式(每个单词的第一个字母大写)
s.isupper()                             字符是否都为大写
s.join(t)                               用 s 连接 t 中的所有字符串
s.center(width)                         在长度为 width 范围内将字符串置中
s.ljust(width )                         在宽度为 width 内左对齐
s.rjust(width )                         在宽度为 width 内右对齐
s.lower()                               s 中所有字符小写
s.upper()                               s 中所有字符大写
s.replace(old , new [,maxreplace ])     将子串 old 替换为 new
s.lstrip()                              删去字符串s开头的空白
s.rstrip()                              删去字符串s末尾的空白
s.strip()                               删去字符串s开头和末尾的空白
s.split([sep [,maxsplit ]])             将字符串 s 分割成一个字符串列表,其中 sep 为分隔符,maxsplit是最大分割次数
s.splitlines([keepends ])               将字符串按行分割为一个字符串列表,若keepends为1,则保留换行符'\n'
s.swapcase()                            串内字符大写变小写,小写变大写,没有大小写的不变
s.title()                               s 转换为标题格式(每个单词的第一个字母大写)
s.translate(table [,deletechars ])      使用字符转换表转换一个字符串
len(m)                  返回m中的条目个数
m[k]                    返回关键字k索引的元素
m[k] = x                设置关键字k索引的值为x
del m[k]                删除一个元素
m.clear()               删除所有元素
m.copy()                返回m的一个浅拷贝
m.has_key(k)            若 m 中存在 key k 返回True,否则返回False
m.items()               返回包含所有关键字和对应值(key ,value )的列表
m.keys()                返回由所有关键字组成的列表
m.update(b)             将字典b中的所有对象加入m
m.values()              返回一个包含m中所有对应值的列表
m.get(k[,v])            返回m[k],若m[k]不存在时,返回 v
m.setdefault(k[,v])     返回m[k],若m[k]不存在时,返回 v 并设置m[k] = v
m.popitem()             从 m 中随机删除一个元素,并以元组的形式返回其关键字和值
m.im_self               引用类实例对象,如果是非绑定方法,im_self通常为 None(见下面小注)
m.im_func               引用类中定义的方法对象
m im_class              引用定义该方法的类
m.__doc__               等于 m.im_func.__doc__
m.__name__              等于 m.im_func.__name__
m.__module__            等于 m.im_func.__module__
b.__doc__       文档字符串
b.__name__      函数/方法名
b.__self__      方法所绑定的实例(未绑定时,返回None)
b.__members__   方法的属性名(返回列表)
m.__dict__      保存模块名字空间的字典
m.__doc__       模块的文档字符串
m.__name__      模块名字
m.__file__      模块的文件名
m.__path__      当一个模块通过一个包被引用时,__path__是包的名字
c.__dict__      类 c 的名字空间
c.__doc__       类 c 的文档字符串
c.__name__      类 c 的名字
c.__module__    类 c 的定义所在的模块
c.__bases__     类 c 的所有父类(这是一个元组)
x.__dict__      实例 x 的名字空间
x.__class__     实例 x 所属的类
__getattr__(self , name)                返回属性 self.name
__setattr__(self , name , value)        设置属性 self.name = value
__delattr__(self , name)                删除属性 self .name
例如:
 
a = x.s       # 调用 __getattr__(x,"s")
x.s = b       # 调用 __setattr__(x,"s", b)
del x.s       # 调用 __delattr__(x,"s")
__lt__(self ,other )            self < other 
__le__(self ,other )            self <= other 
__gt__(self ,other )            self > other 
__ge__(self ,other )            self >= other 
__eq__(self ,other )            self == other 
__ne__(self ,other )            self != other
Integer                 12 bytes
Long integer            12 bytes + (nbits/16 + 1)*2 bytes
Floats                  16 bytes
Complex                 24 bytes
List                    16 bytes + 4 bytes(每个元素)
Tuple                   16 bytes + 4 bytes(每个条目)
String                  20 bytes + 1 byte(每个字符)
Unicode string          24 bytes + 2 bytes(每个字符)
Dictionary              24 bytes + 12*2n bytes, n = log2(nitems)+1
Class instance          16 bytes 加一个字典对象
Xrange object           24 bytes





分享到:
评论

相关推荐

    Python的类型和对象

    有趣的是,`type`本身也是一个类型,即`&lt;type 'type'&gt;`,它是所有类型对象的类型。 在Python中,`class`是用于定义用户自定义类型的构造器。当我们定义一个类,如`class MyClass: pass`,我们创建了一个新的类型,...

    第七章Python对象和类习题及答案--中文

    在本节中,我们将学习 Python 中的对象和类,并通过习题和答案来巩固相关知识点。 定义对象的类 在 Python 中,类是定义对象的模板或蓝图。类是定义相同类型对象的模板,蓝图或合同。例如,在现实世界中,我们可以...

    python学习代码 python学习代码 python学习代码

    虽然它们看似与Python学习无关,但可以推测这可能是两个关于游戏或汽车主题的软件或教程资源。如果这些资源包含Python代码示例,它们可能涵盖了游戏开发或数据分析的实践应用,例如使用Python的pygame库进行游戏编程...

    python 学习资料大全,打包下载

    它可能包括变量、数据类型、控制流、函数、文件操作等基本概念,是学习Python的起点。通过这个教程,新手可以快速建立起对Python编程的基础认知。 这些资源覆盖了Python的初级到进阶知识,无论你是初学者还是有经验...

    Python学习手册(第4版)

    《Python学习手册:第4版》每一章都对Python语言的关键内容做单独...《Python学习手册:第4版》主要内容:学习Python的主要内建对象类型:数字、列表和字典。使用Python语句创建和处理对象,并且学习Python的通用语法模型。

    python面向对象课件

    面向对象编程(Object-Oriented Programming,简称OOP)是Python编程中的核心概念之一,它是一种编程范式,强调通过创建对象来组织代码,使得程序更易于理解和维护。本课件详细介绍了Python中的面向对象特性,包括类...

    Python学习资源

    5. **面向对象编程**:Python是面向对象的语言,理解类和对象的概念,以及如何定义、实例化和继承类,对于深入学习至关重要。 6. **异常处理**:学习如何使用`try/except`语句来捕获和处理程序运行时可能出现的错误...

    Python学习资源 python学习记录网新python学习之路

    "Python学习资源"和"python学习记录网新python学习之路"的标题和描述暗示了这是一份关于Python编程的学习资料集合,可能是教程、笔记或者代码示例。"python-master"这个压缩包子文件的文件名可能代表这是一个包含...

    Python基础语法 Python数据类型与结构 Python函数与模块 面向对象编程在Python中的应用 Python异常处

    Python数据类型与结构 Python函数与模块 面向对象编程在Python中的应用 Python异常处理与调试 Python文件操作与系统编程 Python网络编程基础 Python高级特性:装饰器与迭代器 Python数据库操作:SQLAlchemy Python与...

    Python学习手册

    , 《Python学习手册(第3版)》包括:, 类型和操作——深入讨论Python主要的内置对象类型:数字、列表和字典等。, 语句和语法——在Python中输入代码来建立并处理对象,以及Python一般的语法模型。, 函数——Python...

    Python学习手册_第四版

    如果你想要编写高质量、高效的并且易于与其他语言和工具集成的代码,《Python学习手册:第4 版》将帮助你使用Python快速实现这一点,不管你是编程新手还是Python初学者。本书是易于掌握和自学的教程,根据作者Python...

    Python学习手册(原书第4版)

    学习Python的主要内建对象类型:数字、列表和字典。使用Python语句创建和处理对象,并且学习Python的通用语法模型。使用函数构造和重用代码,函数是Python的基本过程工具。学习Python模块:封装语句、函数以及其他...

    python学习 python学习 python学习

    "Python学习"是探索这个语言的重要步骤,涵盖了从基本概念到复杂应用的广泛领域。 首先,我们要了解Python的数据类型,这是编程的基础。在Python中,万物皆对象,这意味着每个变量都是一个对象,拥有类型。Python...

    python学习手册第四版中文和第五版英文版

    Python学习手册是初学者和进阶者的重要参考资料,帮助他们掌握这门强大的语言。本压缩包包含的是《Python学习手册》的第四版中文版和第五版英文版,提供了全面的学习资源,适合不同语言背景的读者。 第四版中文版是...

    python-3.11.2-docs.epub Python学习资料 Python文档

    python-3.11.2-docs.epub Python学习资料 Python文档 Python 是一门易于学习、功能强大的编程语言。它提供了高效的高级数据结构,还能简单有效地面向对象编程。Python 优雅的语法和动态类型以及解释型语言的本质,...

Global site tag (gtag.js) - Google Analytics