【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]

总结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值