栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

数据结构——列表

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构——列表

一、列表的定义

Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素,可以保存多个数据,而且允许有重复数据。

在Python中,可以使用[]字面量语法来定义列表,列表中的多个元素用逗号进行分隔。列表支持嵌套,但是在创建列表嵌套时,不能用[[0] * 3] * 5]类似方式来创建嵌套列表。比如我们需要创建一个5*3的列表,应该 [[0] * 3 for _ in range(5)]这么创建。

list1 = ["z7sz", "blog", 100, ["top", "python", 88]]

#创建一个5*3的列表嵌套
scores1 = [[0] * 3] * 5
print(scores1)    # [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]

scores2 = [[0] * 3 for _ in range(5)]
print(scores2)    # [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]

#上面两种创建出来的列表嵌套看起来好像是一样的,但是当我们赋值时
scores1[0][0] = 'test'
print(scores1)  #[['test', 0, 0], ['test', 0, 0], ['test', 0, 0], ['test', 0, 0], ['test', 0, 0]]

scores2[0][0] = 'test'
print(scores2)  #[['test', 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]

很明显,第一种创建嵌套列表的方法是错误的。第二种方法的创建方式叫做列表推导式,在下面会讲到。

我们也可以通过Python内置的list函数将其他序列变成列表。

list1 = list(range(1,100))
list2 = list('z7sz')  #['z', '7', 's', 'z']

列表是一种可变数据类型,也就是说列表可以添加元素、删除元素、更新元素,这一点跟字符串是不同的。我们后面也会出一篇来讲讲可变和不可变类型的区别。

二、列表的使用 1、列表的运算符

和字符串类型一样,列表也支持拼接、重复、成员运算、索引和切片以及比较运算。

items1 = [35, 12, 99, 68, 55, 87]
items2 = [45, 8, 29]

# 列表的拼接
items3 = items1 + items2
print(items3)    # [35, 12, 99, 68, 55, 87, 45, 8, 29]
# 列表拼接也可以用extend进行拼接
items3.extend(items1)
print(items3)   #[35, 12, 99, 68, 55, 87, 45, 8, 29, 35, 12, 99, 68, 55, 87]

# 列表的重复
items4 = ['hello'] * 3
print(items4)    # ['hello', 'hello', 'hello']

# 列表的成员运算
print(100 in items3)        # False
print('hello' in items4)    # True

# 获取列表的长度(元素个数)
size = len(items3)
print(size)                 # 9

# 列表的索引
print(items3[0], items3[-size])        # 35 35
items3[-1] = 100
print(items3[size - 1], items3[-1])    # 100 100

# 列表的切片
print(items3[:5])          # [35, 12, 99, 68, 55]
print(items3[4:])          # [55, 87, 45, 8, 100]
print(items3[-5:-7:-1])    # [55, 68]
print(items3[::-2])        # [100, 45, 55, 99, 35]

# 列表的比较运算
items5 = [1, 2, 3, 4]
items6 = list(range(1, 5))
# 两个列表比较相等性比的是对应索引位置上的元素是否相等
print(items5 == items6)    # True
items7 = [3, 2, 1]
# 两个列表比较大小比的是对应索引位置上的元素的大小
print(items5 <= items7)    # True

由于列表是可变类型,所以通过索引操作既可以获取列表中的元素,也可以更新列表中的元素。

2、列表的遍历

如果想逐个取出列表中的元素,可以使用for循环的。

items = ['Python', 'Java', 'Go', 'Kotlin']

for item in items:
    print(item)
3、列表的方法 3.1、添加和删除
items = [10,12,14,16,'z7sz','blog']

# 使用append方法在列表尾部添加元素
items.append('top')
print(items)   #[10, 12, 14, 16, 'z7sz', 'blog', 'top']
# 使用insert方法在列表指定索引位置插入元素
items.insert(1, 'python')
print(items)    #[10, 'python', 12, 14, 16, 'z7sz', 'blog', 'top']

# 删除指定的元素
items.remove('python')
print(items)   #[10, 12, 14, 16, 'z7sz', 'blog', 'top']
# 删除指定索引位置的元素
items.pop(0)
print(items)  #[12, 14, 16, 'z7sz', 'blog', 'top']
#使用del关键字删除元素
del items[0]
print(items)  #[14, 16, 'z7sz', 'blog', 'top']

# 清空列表中的元素
items.clear()
print(items)   #[]

remove方法删除元素时,当元素不在列表中,会报错。使用pop删除元素时,当索引超出范围,也会报错。

3.2、寻找和统计

列表类型的index方法可以查找某个元素在列表中的索引位置;因为列表中允许有重复的元素,所以列表类型提供了count方法来统计一个元素在列表中出现的次数。

items = ['blog',10,12,14,16,'z7sz','blog']

# 查找元素的索引位置,后面的数字表示从哪里开始寻找,如果在列表中寻找不到,会报错
print(items.index('blog'))   #0
print(items.index('blog',2))  #6

# 查找元素出现的次数
print(items.count('blog'))  #2
print(items.count('python'))  #0
3.3、元素的排序和反转

列表的sort操作可以实现列表元素的排序,而reverse操作可以实现元素的反转,这两个方法要求列表中的元素是同一类型。

items = [10,12,14,16,9,1,4,5]

# 排序
items.sort()
print(items)  #[1, 4, 5, 9, 10, 12, 14, 16]

# 反转
items.reverse()
print(items)  #[16, 14, 12, 10, 9, 5, 4, 1]
3.4、列表推导式

在Python中,列表还可以通过一种特殊的字面量语法来创建,这种语法叫做生成式。

# 创建一个由1到9的数字构成的列表
items1 = [x for x in range(1, 10)]

列表推导式生成列表跟普通的for循环+append生成列表相比,列表推导式拥有更好的性能。
我的博客:https://blog.z7sz.top

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/983524.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号