python中的数据容器列表(list)

一. 列表的基本概念

1.定义:列表是一种可变的、有序的数据结构,可以随时添加和删除其中的元素。

#1 列表可以包含任意类型的对象:数字、字符串、列表、元组或其他对象。
#2 列表是一个有序序列。可通过位置偏移量执行列表的索引和分片操作。
#3 列表是可变的。列表的长度可变,即可添加或删除列表成员。列表元素的值也可以改变。
#4 每个列表元素存储的是对象的引用,而不是对象本身,类似于C/C++的指针数组。

列表基本操作包括:创建列表、求长度、合并、重复、迭代、关系判断、索引和分片等。

二.列表的创建

列表对象可以用列表常量或list()函数来创建,示例代码如下。

在这里插入代码片
# [] (中括号) 代表列表
arr = [] # 创建空列表对象
arr2 = [1, 2, 3] # 用同类型的数据创建列表对象
# 列表是一个数据容器, 我们可以在里面放置数据(比如我们前面学到的<数字/小数/字符串/布尔类型
>)
arr3 = [1, 2, 3, 'a', 'b', 'c', True, 3 > 4, print] # 用不同类型的数据创建列表
对象
print(arr3)
print(type(arr3)) # <class 'list'> list 是列表类型

输出的结果:

在这里插入代码片
[1, 2, 3, 'a', 'b', 'c', True, False, <built-in function print>]
<class 'list'>

三. 列表的方法

1.类型转化
将其他 序列 类型转化为列表

在这里插入代码片
s = 'hello world !'
arr4 = list(s) # 使用 list() 将其他数据类型转换成列表
# 输出: ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', ' ', '!']

2.索引取值

支持正序取值或者逆序取值,超出索引范围会报错
正序:索引从 0 开始
逆序:索引从 -1 开始

在这里插入代码片
"""列表是有序的数据容器"""
name_list = ['张三', '李四', '王五', '马六']
# 正序取值: 索引从 0 开始
print(name_list[0])
print(name_list[3])
# print(name_list[6]) # 取值超出索引范围会报错: IndexError: list index out of
range
# 逆序取值: 索引从 -1 开始
print(name_list[-1])
print(name_list[-4])

3.切片取值

Python中符合序列的有序序列都支持切片(slice),切片 方法适用于 字符串、列表、元组。
格式:
[起始值:结束值:步长]
start: 起始索引,从0开始,-1表示结束
stop:结束索引
step:步长,end-start,步长为正时,从左向右取值。步长为负时,反向取值

在这里插入代码片
arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
print(arr)
# 0 1 2 左闭右开 顾首不顾尾
print(arr[0:3]) # 指定区间切片
print(arr[:3]) # 从头开始切片. 如果第一个参数(起始值)是0 可以省略
print(arr[1:-1])
print(arr[1:]) # 切片到末尾. 如果想切到最后一个内容, 第二个参数(结束值)需要省略
print(arr[:]) # 省略参数切全部内容

切片的步长

在这里插入代码片
"""切片的步长"""
# 如果有步长, 就会分为两步走
# 先切起始值与结束值,然后再用步长进行计算
# 不指定步长默认为 1
print(arr[1::1], '步长')
print(arr[1::2], '步长')
# 步长可以为负数
print(arr[1::-2], '负数步长')
print(arr[-1:0:-2], '负数步长')

常用的方法

在这里插入图片描述
列表大部分的方法都是就地操作(修改原来的内容), 拷贝一份进行操作(不会修改原来的值,但是会返回一个新的内容)

四. 常用的方法
1 index():返回指定数据所在位置的索引 。

在这里插入代码片
列表序列.index(数据)

2 count():统计指定数据在当前列表中出现的次数。

在这里插入代码片
name_list = ['张三', '李四', '王五']
# count 统计某个重复的数据出现的次数
print(name_list.count('张三')) # '张三' 这个元素在列表中出现了1次

3 len():访问列表长度,即列表中数据的个数。

在这里插入代码片
name_list = ['张三', '李四', '王五']
print(len(name_list))

4 **in和not in ** 用来查找名字是否存在于列表之中

在这里插入代码片
name_list = ['张三', '李四', '王五']
print('李四'in name_list)

#这样的结果只会有两种,True和False

5 append():列表结尾追加数据。示例如下

在这里插入代码片
列表序列.append(数据) 

注意点: 如果 append() 追加的数据是一个序列,则追加整个序列到列表

6 extend():列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表。

在这里插入代码片
列表序列.extend(数据)

7 insert():指定位置新增数据。

在这里插入代码片
列表序列.insert(位置下标, 数据)

8 pop():删除指定下标的数据(默认为最后一个),并返回该数据。

在这里插入代码片
列表序列.pop(下标)

9 remove():移除列表中某个数据的第一个匹配项。

在这里插入代码片
列表序列.remove(数据)

10 修改指定下标数据

在这里插入代码片
name_list[0] = '张三'

11 逆置:reverse()

在这里插入代码片
arr.reverse()

12 排序:sort()

在这里插入代码片
列表序列.sort( key=None, reverse=False)
注意:reverse表示排序规则,reverse = True 降序, reverse = False 升序(默认)

13 列表遍历

需求:依次打印列表中的各个数据。
while 方法

在这里插入代码片
 name_list = ['张三', '李四', '王五']
>>>
>>> i = 0
>>> while i < len(name_list):
 	 print(name_list[i])
 	 i += 1

for 方法

在这里插入代码片
 name_list = ['张三', '李四', '王五']
>>>
>>> for i in name_list:
	 print(i)

14 列表嵌套

所谓列表嵌套指的就是一个列表里面包含了其他的子列表。
应用场景:要存储班级一、二、三三个班级学生姓名,且每个班级的学生姓名在一个列表。

在这里插入代码片
name_list = [
['小明', '小红', '小绿'],
['Tom', 'Lily', 'Rose'],
['张三', '李四', '王五']
]
print(name_list[2][1])

[0,0]就是'小明'

序列默认从0开始数,所以找到的元素为'李四'

五.列表的总结

列表作为python中的一种重要的数据容器,在日后的工作中会有十分重要的作用,因为它是一种可以变化的序列,所以我们可以对它进行增,删,改,查等操作.当然,它的一些优点也会是它的缺陷,比如说,它的数据的改变,可能会让我们自己有时候会忘记了自己的操作,导致后续工作的错误,下次我们再来聊一聊一种不可变的序列:元组,他也是一种重要的数据容器.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想做程序猿的员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值