python内置类型
python解释器中主要内置类型有数字、序列、映射、类、实例和异常。
序列类型-list,tuple,range
有三种基本序列类型:list,tuple和range
通用序列操作
大多数序列类型,包括可变类型和不可变类型都支持下表中的操作。此表按优先级升序列出了序列操作,在表格中,s和t是具有相同类型的序列。n、i、j和k是整数而x是任何满足s所规定的类型和值限制的任意对象。
注意,in
和not in
操作具有与比较操作相同的优先级,+
(拼接)和*
(重复)操作具有与对应数值运算相同的优先级
运算 | 结果 | 注释 |
---|---|---|
x in s | 如果s中某项等于x则结果为True,否则为False | 1 |
x not in s | 如果s中某项等于x则结果为False,否则为True | 1 |
s+t | s与t相拼接 | 6 7 |
s*n或n*s | 相当于s与自身进行n次拼接 | 2 7 |
s[i] | s的第i项,起始为0 | 3 |
s[i:j] | s从i到j的切片 | 3 4 |
s[i:j:k] | s从i到j步长为k的切片 | 3 5 |
len(s) | s的长度 | |
min(s) | s的最小项 | |
max(s) | s的最大项 | |
s.index(x,[,i[,j]]) | x在i中首次出现项的索引号(索引号在i或其后且在j之前) | 8 |
s.count(x) | x在s中出现的总次数 |
注释:
- 虽然
in
和not in
操作在通常情况下仅被用于简单的成员检测,某些专门化序列(例如str,bytes,和bytearray)也使用它们进行子序列检测
- 小于0的n值会被当作0来处理(生成一个与s同类型的空序列)。注意序列s中的项不会被拷贝,而是会被多此引用。例如:
原因就是[[]]
是一个包含了一个空列表的单元素列表,所以[[]]*3
结果中的三个元素都是对这一个空列表的引用。修改lists
中的任何一个元素实际上都是对这一个空列表的修改。我们可以用如下的方式创建以不同列表为元素的列表:
- 如果i或j为负值,则索引顺序是相对于序列s的末尾,索引号会被替换为
len(s)+i
或len(s)+j
。但要注意-0依然为0 - s从i到j的切片被定义为所有满足
i<=k<j
的索引号k组成的序列。如果i或j大于len(s)
,则使用len(s)
。如果i被省略或为None
,则使用0。如果j被省略或为None,则使用len(s)
。如果i大于等于j,则切片为空 - s从i到j步长为k的切片被定义为所有满足
i <= k < j
的索引号k的项组成的序列。如果i或j大于len(s)
,则使用len(s)
。如果i被省略或为None,则使用0。如果j被省略或为None,则使用len(s)
。如果i大于等于j,则切片为空。 - 拼接不可变序列总是会产生新的对象。这意味着通过重复拼接来构建序列的运行时开销将会基于序列总长度的乘方。想要获得线性的运行时开销,我们必须改用下列替代方案之一:
a. 如果拼接 str 对象,你可以构建一个列表并在最后使用 str.join() 或是写入一个 io.StringIO 实例并在结束时获取它的值
b. 如果拼接 bytes 对象,你可以类似地使用 bytes.join() 或 io.BytesIO,或者你也可以使用 bytearray 对象进行原地拼接。 bytearray 对象是可变的,并且具有高效的重分配机制
c. 如果拼接 tuple 对象,请改为扩展 list 类
d. 对于其它类型,请查看相应的文档 - 某些序列类型(例如range)仅支持遵循特定模式的项序列,因此并不支持序列拼接或重复
- 当 x 在 s 中找不到时 index 会引发 ValueError。 不是所有实现都支持传入额外参数 i 和 j。 这两个参数允许高效地搜索序列的子序列。 传入这两个额外参数大致相当于使用 s[i:j].index(x),但是不会复制任何数据,并且返回的索引是相对于序列的开头而非切片的开头。
不可变序列类型
不可变序列类型通常实现了对hash()
内置函数的支持,而可变序列类型通常没有实现。这种支持允许不可变类型,例如tuple实例被用作dict键,以及存储在set和frozenset实例中。
尝试对包含有不可哈希值的不可变序列进行哈希运算将会导致TypeError。
可变序列类型
/待补充
列表
列表是可变序列,通常用于存放同类项目的集合。
class list([iterable])
可以使用多种方式构建列表:
- 使用一对方括号来表示空列表:
[]
- 使用方括号,其中的项以逗号分隔:
[a]
,[a,b,c]
- 使用列表推导式:
[x for x in iterable]
- 使用类型的构造器:
list()
或list(iterable)
构造器将构造一个列表,其中的项与iterable中的项具有相同的值和顺序。iterable可以是序列、支持迭代的容器或其他可迭代对象。如果iterable已经是一个列表,将创建并返回其副本,类似于iterable[:]
。例如,list('abc')
返回['a','b','c']
而list(1,2,3)
返回[1,2,3]
。如果没有给出参数,构造器将创建一个空列表[]
文本序列类型–str
在python中处理文本数据是使用str对象,也称为字符串。字符串是由Unicode码位构成的不可变序列。字符串字面值有多种不同的写法:
- 单引号:
'允许包含有 "双" 引号'
- 双引号:
"允许包含有 '单' 引号"
- 三重引号:
'''三重单引号'''
,"""三重双引号"""
使用三重引号的字符串可以跨越多行-其中所有的空白字符都将包含在该字符字面值中。
作为单一表达式组成部分,由空格分隔的多个字符串字面值会被隐式地转换为单个字符串字面值。也就是说,("spam " "eggs") == "spam eggs"
字符串的方法
**str.format(*args, kwargs)
执行字符串格式化操作。调用此方法的字符串可以包含字符串字面值或者以花括号{}
括起来的替换域。每个替换域可以包含一个位置参数的数字索引,或者一个关键字参数的名称。返回的字符串副本中每个替换域都会被替换为对应参数的字符串值。
python内置类型相关推荐
- 算法与数据结构(part2)--Python内置类型性能分析
学习笔记,仅供参考 文章目录 算法与数据结构--基于python Python内置类型性能分析 timeit模块 计时器类timeit.Timer 计时器类下的timeit.Timer.timeit方 ...
- python内置类型方法_python基础(一)内置类型及方法
python 内置类型主要包含7大类: 数字 序列 映射 文件 类 实例 异常 其中,最常用数据类型为序列 序列 python中包含7种内建序列 列表(list):由方括号构成,用逗号分隔项目: [a ...
- python 类继承list,为什么继承 Python 内置类型会出问题?!
本文出自"Python为什么"系列,请查看全部文章 不久前,Python猫 给大家推荐了一本书<流畅的Python>(点击可跳转阅读),那篇文章有比较多的"溢 ...
- Python——内置类型
Python定义了丰富的数据类型,包括: 数值型:int, float, complex 序列:(iterable) str, unicode, tuple, list, bytearray, buf ...
- Python内置类型——list
list(列表)是Python内置的可变序列(Sequence)类型,list的对象的方法也都是就地(in-place)更改调用这些方法的列表对象, List的一些细节 可以直接为list的某个下标赋 ...
- python内置类型_Python内置对象类型
核心数字类型: 数字:int,long,float,complex,bool 字符:str,unicode 列表:list 字典:dict 元组:tuple 文件:file 其他类型:集合(set), ...
- python内置类型方法_浅析Python数字类型和字符串类型的内置方法
一.数字类型内置方法 1.1 整型的内置方法 作用 描述年龄.号码.id号 定义方式 x = 10 x = int('10') x = int(10.1) x = int('10.1') # 报错 内 ...
- Python内置类型集合set和frozenset
文章目录 简介 构造 基本使用 交集.并集.差集.对称差集 无交集.子集.超集 运算符 可用于 set 的操作 参考文献 简介 集合对象 set 是由具有唯一性的可哈希对象组成的无序多项集,如 lis ...
- Python内置类型—序列
参考文章:序列类型 --- list, tuple, range python的序列类型分为基本序列类型和附加序列类型,三种基本序列类型有list, tuple, range 对象.附加序列类型二进制 ...
- python内置类型和类_python – 内置类型和用户定义之间的不一致
区别在于内置输入是C编译的代码描述符,而用户定义的函数代表它的代码 descriptors.有关详细信息,请参阅 source. 此外,虽然内置函数及其方法是静态分配的数据结构,但用户定义的数据结构的 ...
最新文章
- ASP.NET XML Web 服务的工作流解决方案
- Qt下的OpenGL 编程(3)绘制平面几何体
- Docker最全教程之使用Docker搭建Java开发环境
- linux的几个文本内容查看命令小结
- 一文读懂云原生一体化数仓
- GConf error:Failed to contact configuration server
- AR导航真的有前途,马云领衔1亿2500万投资
- 在工作中能学到的东西-2
- 数字信号处理基础----拉普拉斯变换与Z变换
- python算法详解豆瓣_豆瓣评分9.0以上的编程书,了解一下?
- 神经网络控制基本原理,神经网络理论及其应用
- Tuxera NTFS2023Mac读写ntfs磁盘工具
- 20135202闫佳歆——信息安全系统设计基础第六周学习总结
- 二进制转十六进制 算法实现思想
- hdu2122 Ice_cream’s world III(MST)
- 广外oj 旅游计划(拓扑排序模板题)
- JAVA根据地点获取经纬度
- 十进制转换为N进制C语言
- html 写字板 乱码,Win7系统写字板打开文档出现乱码的两种解决方法
- 从官网下载mod_jk.so