一、前言
Python的列表list与C++的vector很像,但也有很多不同之处,接下来我们将会通过C++的vector对比学习列表list
二、相同点
- 都支持动态扩容,可以随时随地添加和删除元素
- 下标访问时,第一个元素下标为0
三、不同点
- Python的 list 中元素可以是不同类型,但是C++的 vector 中元素必须为同一类型(因为C++中大多为模版编程)
- Python支持负数下标访问,表示倒数第几个元素
- Python下标访问不可以越界,越界就会抛异常
注:C++允许你越界访问,但是这种行为属于未定义的,允许不代表安全,而试图对
vector
未分配的空间进行赋值,会破坏vector
的内部数据结构,导致程序出现异常甚至崩溃。不要做未定义的行为,要时时刻刻保证安全!
四、list的相关操作(与C++使用成员方法一致)
创建 | (1) [ ... ] 创建:py_list = [1, 2, 3.14, 'hello'] (2)list()函数创建:py_list = list([1, 2, 3.14, 'hello']) |
插入 | (1)append(data) :尾插 (2)insert(pos, data) :在pos位置前插入 |
查找 | (1)if data in py_list: 判断data是否在py_list中,notin判断是否不在 (2)index(data):data存在,返回下标;反之抛异常 |
删除 | (1)pop():尾删 (2)pop(pos):删除pos位置的元素 (3)remove(data):删除从左往右第一个出现的data |
拼接 | (1)py_list1 + py_list2:拼接成一个更大的列表,不对双方修改 (2)extend(py_list2):对调用该函数的列表拼接 【高效】 (3)py_list1 += py_list2:2添加到1的末尾【低效】 |