【Python基本语法02】数据结构之列表

前言

上一讲分享了 Python 的基本数据类型有数字 (Number) 和字符串 (String),常用的有整型 (int)、浮点型 (float) 以及 String。有了数据之后,如何用恰当有效的容器存储这些数据并进行相应的数据操作才是关键。本讲开始将分享数据结构,Python 的数据结构主要包含列表 (list)、元组 (tuple)以及字典 (dict),前两者属于序列 (seq),后者属于映射 (map)。 本讲走进 list,采用 Q&A 形式分享个人的一些思考。

Q1:什么是 list

list 是存储数据的容器之一,可以存储 int、float、string 以及 list(即嵌套);用方括号标识,元素之间用逗号隔开。list 是可变 seq,即指向的元素可以更改,这一点与下一讲介绍的 tuple 相反。

#示例
lst = [10,10.1,'hello',[1,2]]
print(lst,type(lst))
#输出
[10, 10.1, 'hello', [1, 2]] <class 'list'>

Q2:如何访问 list 中的元素

这就需要索引 (index)、切片 (slice) 以及步长 (stride)。

  • index 是 seq 的通用操作,本质上就是编号,从0开始计数,-1表示末位,便于计算机快速访问到指定元素
#示例
lst = [10,10.1,'hello',[1,2]]
print(lst[1])
print(lst[-1])
#输出
10.1
[1, 2]
  • slice 代表一个范围,由 index 组成,之间用 :隔开,注意左闭右开,便于计算机快速访问某个范围的所有元素
#示例
lst = [10,10.1,'hello',[1,2]]
print(lst[1:2])
print(lst[:2])
print(lst[1:])
print(lst[0:-1])
print(lst[:])
#输出
[10.1]
[10, 10.1]
[10.1, 'hello', [1, 2]]
[10, 10.1, 'hello']
[10, 10.1, 'hello', [1, 2]]
  • stride 便于计算机间隔访问 list 的某些元素
#示例
lst = [10,10.1,'hello',[1,2]]
print(lst[0:2:2])
print(lst[::2])
#输出
[10]
[10, 'hello']

Q3:如何更改 list 中的元素

这里的更改可以包含增加,更新,删除,换序等操作,这就涉及到 list 的内置函数和方法了。下表展示了常用的内置函数。

函数 描述
len(lst) 返回 lst 长度
max(lst) 返回 lst 最大值
min(lst) 返回 lst 最小值
list(seq) 把 seq 转换为 list

下表是常用的 list 运算符。

函数 描述
lst1 + lst2 连接 lst1 与 lst2
lst1 * 2 重复2次
a in lst 判别 a 是否在 lst 中

下表是常用的 list 方法。

函数 描述
lst.append(obj) lst 末尾增加 obj
lst.extend(seq) lst 末尾增加 seq
lst.insert(index, obj) lst 的 index 处插入 obj
lst.pop(index) 删除 lst 的 index 处的元素
lst.remove(obj) 删除 lst 中 obj 的第一个匹配项
lst.clear() 清空 lst
lst.sort() 排序 lst
lst.reverse() 反向 lst
lst.copy() 复制 lst
lst.count(obj) 返回 lst 中 obj 的个数

补充说明

在 CV 中,随机数生成器十分常用,所以这里要补充说明一下生成器 range()。其与 list 比较类似,但 index 以及 stride 之间用逗号隔开。

#示例
print(range(5),type(range(5)))
print(range(2,5),type(range(2,5)))
print(range(2,10,2),type(range(2,10,2)))
lst = list(range(5))
print(lst)
#输出
range(0, 5) <class 'range'>
range(2, 5) <class 'range'>
range(2, 10, 2) <class 'range'>
[0, 1, 2, 3, 4]

总结

在这里插入图片描述

发布了34 篇原创文章 · 获赞 19 · 访问量 2228

猜你喜欢

转载自blog.csdn.net/chiyukunpeng/article/details/105180835