type
status
date
slug
summary
tags
category
icon
password
Email
Python标准库的序列类型
按照能够被修改来分组:
可变序列:
- list
- bytearray
- array.array
- collections.deque
- memoryview
不可变序列:
- tuple
- str
- bytes
还可以按照存储方式来划分:
容器序列:能够存放不同类型的数据,并且存放的是对象的引用。
- list
- tuple
- collections.deque
扁平序列:只能容纳一种类型,并且存储的是值不是引用。
- str
- byte
- bytearray
- memoryview
- array.array
列表
列表是最简单的数据类型,相当于数组。
- 列表的基础操作函数
- 列表模拟栈
- 队列
- 列表推导式
以下是列表的常见操作:
列表推导式
利用列表推导式生成笛卡尔积:
列表推导式的作用:生成列表
生成器表达式
用于初始化元组,数组或者其他序列类型。
生成器表达式相对于列表推导式的优势:可以逐个的产生元素,而不是先建立一个完整的列表,再把整个列表传递给构造函数,显然第一个会节省内存。
元组和序列
元组是python的一种标准序列类型。
一个元组由数个
逗号
与 值
组成:元组始终携带括号
元组是不可变的,因此不能给一个元组的某一个元素赋值。
元组和列表的区别:
- 元组是不可变的,并且元组的一个嵌套括号内可以包含多种不同类型的值,可以通过索引访问。
- 列表是可变的,并且只包含同一种类型的值,可以通过迭代访问。
注意:
创建一个空元组? 直接输入一个括号即可。
创建一个只含元素的元组? 需要输入
元素,
元组的拆包
元组拆包的方式:
- 平行赋值。
- 拆分元素,作为函数的参数。
- 函数以元组的形式返回多个值
用* 处理剩下的元素:
注意只能出现一个 * 的变量,并且位置可以是随意的。
嵌套元组拆包
只需要这个嵌套结构满足元组本身的嵌套结构,便可以拆包
具名元组
如何使得元组为一个带字段名和类名的元组?使用
namedtuple
即可。namedtuple
中:- 一个是类名
- 一个是各个字段的名字,可以是可迭代对象,也可以是由空格分开的字符串。
常见属性与方法:
- _fields:返回这个所有的字段名
- _make(xxx):接受一个可迭代对象,返回这个类的实例
- _asdict():友好的展示元组信息。
元组的不可变性质
所有的对于元组自身的增减操作都是非法的,对于列表来说是可以的,所以元组是不可变列表,列表是可变的。
- 所有的有
__ixxx__
:都是对自身的操作,元组违法。
- 类似的
append
或者remove
:增减操作元组是非法的。
array数组
array数组对于一个只含数字的序列来说,
array.array
比list更加高效。数组基本上支持所有的可变序列具有的操作,而且还具有其他的对文件的操作,可以进行更快的文件操作。
array对于文件的操作举例:
双端队列
类似于c++的
deque
一样,能够对数组提供更高效的双端的服务:循环技巧
在字典中,使用
items()
函数来遍历键值对:在列表中,使用
enumerate
获得索引值和数值:使用
zip
打包需要同时循环的列表:reversed
逆向打印:去重
后 排序
输出:首先转换为集合,然后再sorted:常用数组操作总结
操作函数 操作功能
__add__ | a+b 不是原地操作 |
__iadd__ | a+=b 原地操作 |
append | 末尾追加一个元素 |
appendleft | 最左边添加一个元素 |
clear | 清除元素 |
__contains__ | 是否存在某个元素 |
copy | 浅拷贝 |
__copy__ | 对 copy.copy的支持 |
count | 某个元素的出现次数 |
__delitem__ | 位置p的元素删除 |
extend | 添加一个可迭代对象到末尾 |
extendleft | 添加一个可迭代对象到最左边 |
__getitem__ | 获取位置p的元素 |
index | 元素num在序列中第一次出现的位置 |
insert | 插入一个元素在指定的位置 |
__iter__ | 返回迭代器 |
__len__ | 序列的长度 |
__mul__ | 重复拼接 |
__imul__ | 就地重复拼接 |
__rmul__ | 反向重复拼接 |
pop | 弹出最后的元素并且返回值 |
popleft | 弹出最左边的元素 |
remove | 移除第一次出现的某元素 |
reverse | 翻转 |
__reversed__ | 返回一个从尾部往前扫描的迭代器 |
rotate | n个元素从队尾移到队头 |
__setitem__ | 把位置p的元素换为x |
sort | 排序 |
- 作者:Yuleo
- 链接:https://www.helloylh.com/article/python1
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。