Python基础之列表内置方法
1. 列表
- 数据结构:以某种方式(如通过编号)组合起来的元素(如数,字符乃至其他数据结构)集合。
- 在python中,最基本的数据结构为序列。序列中的每个元素都有编号,即其位置或索引,其中第一个元素的索引为0,第二个元素的索引为1,以此类推。
- 偏移量:相对于序列开头的偏移量
1.1 序列
- 容器(container):可包含其他对象的对象
- 主要的容器:序列(列表和元组(索引)),映射(字典(键))和集合。
1.2 通用的序列操作
- 索引
a = [1, 3, 5, 7]
print(a[1]) # 打印3
- 切片
a = [1, 3, 5, 7, 9, 11, 13]
print(a[1:3]) # [3,5]
print(a[-3:-1]) # [9, 11]
print(a[:3]) # [1, 3 , 5]
print(a[4:]) # [9, 11, 13]
print(a[:]) # [1, 3, 5, 7, 9, 11, 13]
print(a[1:6:2]) # [3, 7, 11],指定步长
print(a[5:1:-1]) # [11, 9, 7],注意开始索引大于结束索引
- 序列相加
print([1, 2, 3] + [4, 5, 6]) # [1, 2, 3, 4, 5, 6]
- 乘法
print([1] * 5) # [1, 1, 1, 1, 1]
print([none] * 5) # 创建指定长度空列表
- 成员资格
要检查特定的值是否包含在序列内,可使用运算符in,返回布尔值。
name = 'zhaojun'
print('zh' in name) # True
hobby_list = ['sing', 'dancing', 'rap', 'basketball', 'music']
print('run' in hobby_list) # False
- 长度、最大值、最小值
nums = [1, 3, 5, 2, 4]
print(len(nums)) # 5
print(max(nums)) # 5
print(min(nums)) # 1
1.3 列表的基本操作
- 修改列表:给元素赋值
nums = [1, 2, 3]
x[1] = 5
print(x) # [1, 5, 3]
- 删除元素
nums = [1, 2, 3]
del nums[2]
print(nums) # [1, 2]
- 给切片赋值
nums = [1, 2, 3, 4, 5, 6, 7]
nums[:3] = [0, 0, 0]
print(nums) # [0, 0, 0, 4, 5, 6, 7]
# 赋值是将整段插入切片位置,不考虑数量
nums = [1, 2, 3, 4, 5, 6, 7]
nums[1:3] = [0, 0, 0, 0]
print(nums) # [1, 0, 0, 0, 0, 4, 5, 6, 7]
1.4 列表方法
- append(就地修改):将一个对象加到列表末尾。
nums = [1, 2, 3, 4]
nums.append(5)
print(nums) # [1, 2, 3, 4, 5]
- clear:就地清空列表内容。
nums = [1, 2, 3, 4]
nums.clear()
print(nums) # [] 返回空列表
# 用切片赋值实现
nums1 = [1, 2, 3, 4]
nums1[:] = []
print[nums1] # []
- copy:复制列表
nums = [1, 2, 3, 4]
nums1 = nums.copy()
print(nums1)
print(id(nums))
print(id(nums1))
nums.append(5)
print(nums)
print(nums1)
"""
执行结果为:
[1, 2, 3, 4]
2193656132360
2193656116168
[1, 2, 3, 4, 5]
[1, 2, 3, 4]
"""
- count:计算指定的元素在列表中出现了多少次。
nums = [1, 2, 2, 3, 4, 4]
print(nums.count(2)) # 2
- entend:将多个值附加到列表末尾(扩展列表)
a = [1, 2, 3]
b = [4, 5, 6]
a.entend(b)
print(a) # [1, 2, 3, 4, 5, 6]
- index:在列表中查找指定值第一次出现的索引。如果搜不到,就会引发异常,ValueError。
a = ['a', 'b', 'c', 'd']
print(a.index('b')) # 1
- insert:将一个对象插入列表。
nums = [1, 2, 3, 4, 5]
nums.insert(3, '6')
print(nums) # [1, 2, 3, '6', 4, 5]
-
pop:从列表中删除一个元素(末尾为最后一个元素),并返回这一元素。
使用pop可实现一种常见的数据结构———栈(stack),后进先出(LIFO)。
push和pop是大家普遍接受的两种栈操作(加入和取走)的名称。python没有提供,但可用append代替。
要创建先进先出(FIFO)的队列,可使用insert(0, ...)代替append,也可继续使用append但弹出用pop(0)。
x = [1, 2, 3]
a = x.pop()
print(a) # 3
print(x) # [1, 2]
b = x.pop(0)
print(b) # 1
print(x) # [2]
- remove:删除第一个为指定值的元素(就地修改不返回值)。
x = ['to', 'be', 'or', 'not', 'to', 'be']
x.remove('be')
print(x) # ['to', 'or', 'not', 'to', 'be']
-
reverse:按相反的顺序排列列表中的元素。
如果要按相反的顺序迭代序列,可使用函数reversed,这个函数不返回列表,而是返回一个迭代器。
x = [1, 2, 3]
x.reverse()
print(x) # [3, 2, 1]
-
sort:对列表就地排序。
sorted函数:对列表排序,返回排序后列表,原列表不变。
a = [1, 3, 5, 2, 4]
a.sort()
print(a) # [1, 2, 3, 4, 5]
b = [1, 3, 5, 2, 4]
c = sorted(b)
print(b) # [1, 3, 5, 2, 4]
print(c) # [1, 2, 3, 4, 5]