1. 列表简介
列表由一系列按特定顺序排列的元素组成。在Python中,使用[]来表示列表,并用逗号分隔其中的元素。
1.1 访问列表元素
列表是有序集合,因此将元素位置和索引告诉Python即可访问任意位置的元素
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicyles[0])
上述语法提到了访问列表元素的语法,返回值只有该元素,而没有方括号和引号。
1.2 索引从0开始而不是从1开始
列表在内存中的存储空间是连续的,因此在创建列表时,首先向操作系统申请一块固定大小的内存空间,用来存储每个列表元素。基于这种特性,列表可以实现随机访问(根据下标随机访问元素)。但是这也导致插入、删除数据时为保证连续性,就需要做大量的数据搬移工作。
从列表存储的内存模型上来看,“下标”代表的应该是“偏移”。那么bicycles[0]就是偏移量为0的位置,也就是首地址。因此计算bicycles[k]的内存地址公式为:
a[k]_address = base_address + k * type_size
而如果使用从1开始计数,那计算数组元素a[k]的地址为
a[k]_address = base_address + (k-1) * type_size
如果从1开始,那么每次随机访问都多了一次减法运算,对于CPU来说,就多了一次减法指令。
2. 修改、添加和删除元素
2.1 添加元素
- 在列表末尾添加元素。
bicycles.append('honda') - 在列表任意位置插入元素。
bicycles.insert(1,'ducati')
2.2 删除元素
- 根据索引位置删除元素。
del bicycles[0] - 删除末尾元素并使用该值。
print(bicycles.pop()) - 使用并删除列表中任意位置的值。
print(bicycles.pop(1)) - 根据值删除元素。
bicycles.remove('trek')
3. 组织列表
3.1 使用sort() 进行永久性排序
cars = ['bmw', 'audi', 'tpyato']
cars.sort()
print(cars)
其结果为
['audi', 'bmw','toyato']
使用cars.sort(reverse=True)对列表的排序结果进行翻转。
3.2 使用sorted()对列表进行临时排序
能够按照特定的顺序排列元素,但是列表中元素顺序并未变。
3.3 使用len()函数确定列表的长度
len(cars)能够快速确定列表的长度
4. 使用列表时避免索引错误
- 使用超出元素长度的下标,将导致索引错误。
- 访问
cars[-1]访问的永远是最后一个列表元素。