第8天:Python List

Python 中的数据结构是通过某种方式组织在一起的数据元素的集合,这些数据元素可以是数字、字符、甚至可以是其他数据结构 在 Python 中,最基本的数据结构是序列(列表和元组),序列中的每个元素都有一个序号(元素的具体位置),这个序号叫索引,索引下标从0开始,以此类推......

  • 列表俗称是 Python 中的苦力,列表可变(可以改变列表的内容)

  • 列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。

  • 列表的数据项不需要具有相同的类型 创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

list1 = ['baidu', 'google', 12, 34];list2 = [1, 2, 3, 4, 5 ];list3 = ["a", "b", "c", "d"];

1. 列表函数

1.1 list 函数

如果对字符串赋值后想要改变字符串中的某个值,因为字符串不能像列表一样可更改,如果想改变这时候可以利用 list 函数,如下:

>>> ll=list('hello')>>> ll['h', 'e', 'l', 'l', 'o']>>> ll[2]'l'>>> ll[2]='5'>>> ll['h', 'e', '5', 'l', 'o']

注意:list 函数适用于所有类型的序列,而不只是字符串

1.2 len 函数

len 函数返回列表中的元素个数

>>> list1 = ['baidu', 'google', 12, 23];>>> len(list1)4

1.3 max 函数

max 函数返回列表元素最大值

>>> list_num=[2,3,5,6,8,12]>>> max(list_num)12

1.4 min 函数

返回列表元素最小值

>>> list_num=[2,3,5,6,8,12]>>> min(list_num)2

2 列表方法

列表提供了几个详细的方法,这些方法用于检查或者修改列表中的内容

2.1 append

append 方法用于在列表的末尾追加新的内容

list_append = [1,2,3,4]list_append.append(5)list_append[1, 2, 3, 4, 5]

2.2 count

count 方法用于统计某个元素在列表中出现的次数

num[1, 2, 3, 4, 5, 5, 5, 5, 6]# 统计num列表中5出现的次数num.count(5)4
# 统计字母a出现的次数name=['a','a','abf','ark','nhk']
name.count('a')2

2.3 extend

extend 方法表示追加内容,它可以在列表的末尾一次性追加另一个序列中的多个值,也就是用新列表扩展原有列表

a =[1,2,3]b = [4,5,6]# 将列表b追加在列表a后面a.extend(b)a[1, 2, 3, 4, 5, 6]

此操作和列表的相加操作,但是追加操作改变原有列表,而相加不改变原有列表,例如:

a = [1,2,3]b = [4,5,6]a + b[1, 2, 3, 4, 5, 6]# 连接操作不改变原有列表a[1, 2, 3]

2.4 index

index 方法用于从列表中找出某个元素第一次匹配的位置的索引位置

content = ['where','who','lisi','cntent','who']content.index('who')1

==注意:== 以上方法中有两个位置有'who’,但是只找出了第一次匹配的索引位置元素

2.5 insert

insert 方法用于像列表中插入对象

num = [1,2,5,6,7]num.insert(2,3)num[1, 2, 3, 5, 6, 7]num.insert(3,4)num[1, 2, 3, 4, 5, 6, 7]

2.6 pop

pop 方法会移除列表中的一个元素(默认是最后一个),并且返回该元素的值

x = [1,2,3]x.pop()3x[1, 2]x.pop()2x[1]

注意:pop 方法是唯一一个既能修改列表又能返回元素值的方法(除了None),pop 和 append 方法是 Python 中数据结构的出栈和入栈,如果追加(append)刚刚出栈(pop)的值,得到的还是原来的列表

x = [1,2,3]x.append(x.pop())x[1, 2, 3]

2.7 remove

remove 方法用于移除列表中第一个匹配的元素

content['where', 'who', 'lisi', 'cntent', 'who', 'who']# 移除了第一个匹配的元素content.remove('who')content['where', 'lisi', 'cntent', 'who', 'who']

2.8 reverse

reverse 方法是将列表中的元素进行反转操作

x[1, 2, 3]# 元素反向存储x.reverse()x[3, 2, 1]

2.9 sort

sort 方法用于在原位置排序,'原位置排序’意味着改变原来的列表而让列表中的元素有顺序排列

x = [2,3,5,6,1,4,7]x.sort()x[1, 2, 3, 4, 5, 6, 7]

2.10 clear

clear 方法用于清空列表

>>> list1=['baidu', 'google', 12, 23]>>> list1['baidu', 'google', 12, 23]# 清空列表内容>>> list1.clear()>>> list1[]

2.11 copy

copy 方法是复制列表

>>> list1 = ['baidu', 'google', 12, 23];>>> list1.copy()['baidu', 'google', 12, 23]>>> list2 = list1.copy()>>> list2['baidu', 'google', 12, 23]

3. 列表基本操作

列表可以使用所有适用于序列的标准操作,比如第7天所学的索引、分片、连接和相乘,更有趣的是,列表是可以修改的,也就是定义的列表内容可以根据需求更改,本节介绍一些改变列表的方法:如元素赋值、元素删除、分片赋值以及列表方法(但是请注意,并不是所有的列表方法都能真正改变列表)

3.1 改变列表:元素赋值

在列表中要给指定的元素赋值时,我们需要指定特定的索引标记来为列表中某个特定的,位置明确的元素赋值,比如 x[3]=5

# x=[1,2,3,4,5]x[1, 2, 3, 4, 5]# 改变列表第四个元素的内容x[3]=5x[1, 2, 3, 5, 5]

==注意:== 不能为一个位置不存在的元素赋值,如果列表长度为2,则不能为索引为10 的元素进行赋值,如果需要赋值则需要创建一个长度为11的列表。

3.2 删除列表元素

若要删除列表中的元素,直接利用del删除即可

# 定义长度为4的姓名列表names=['zhangsan','lisi','wangwu','zhaoliu']names['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
# 删除第三个元素del names[2]
# 最后列表长度由4变为3names['zhangsan', 'lisi', 'zhaoliu']

del 语句还能用于删除其他元素,也可以用于变量的删除操作。

3.3 分片赋值

在 Python 中对序列或者列表的分片操作是一个很强大的特性,分片赋值会显得更加强大,例如:

# 定义一个listname = list('Pyther')
# 改变 list 中的最后两个值name[4:]='on'name['P', 'y', 't', 'h', 'o', 'n']

从上可知,程序可以一次为多个元素赋值,在分片赋值时,可以使用与原序列不等长的序列将分片替换,例如:

name_re = list('perl')name_re['p', 'e', 'r', 'l']# 分片替换name_re[1:] = list('ython')name_re['p', 'y', 't', 'h', 'o', 'n']

分片赋值还可以在不需要更改原有列表任何内容的情况下进行新元素插入

num = [1,4,5]# 在第一个元素后插入新的元素num[1:1]=[2,3]num[1, 2, 3, 4, 5]

同理也可以通过分片操作来删除列表中的元素,同样也支持负数分片操作

num[1, 2, 3, 4, 5]# 给第一个和迪桑元素之间分片赋值一个空序列,即删除元素num[1:3] = []num[1, 4, 5]
# 负数分片操作num[-1:-1] = [5,5,5]num[1, 2, 3, 4, 5, 5, 5, 5, 6]

总结

本节给大家介绍了 Python 数据结构之列表的操作与使用,对 Python 工程师使用列表提供了支撑。

系列文章
(0)

相关推荐

  • python元组

    元组tuple也是python常用的一种数据类型,与列表类似,唯一不同的是元组中的元素是不允许修改的. 元组使用的是小括号(),列表使用的是中括号[]. 1.元组的创建 元组的创建和列表一样,只需要将 ...

  • Python中的匿名函数

    原创 DBA随笔 DBA随笔 1周前 // Python中的匿名函数 // 写python的时候,大多数场景下,我都是if else选手,因为最核心的逻辑几乎都是通过if else语句来实现的.关于匿 ...

  • 基础语法第4关笔记

      主线课程: 一.列表   1.1 列表的概念 列表是Python中有序可变的一种数据类型,在编程里,列表中的数据被称为列表的元素.列表的组成如下图:   列表是一个包容的数据类型. 其 ...

  • Python|二叉树叶子结点问题解决方法

    问题描述键盘输入一颗二叉树,求解其叶子结点个数.示例: 输入:4,2,6,1,3,5输出:3解决方案一棵树当中没有子结点(即度为0)的结点称为叶子结点,简称"叶子".当二叉树为空时 ...

  • Python数据分析库有哪些?常见分类!

    众所周知,Python前景好.需求量大.薪资高.就业岗位多,除了基本的开发工作之外,还可以从事人工智能.数据分析.网络爬虫等岗位.那么说起数据分析,你知道Python常用数据分析库有哪些吗?我们一起来 ...

  • PyPy为什么能让Python比C还快?一文了解内在机制

    来自|机器之心 「如果想让代码运行得更快,您应该使用 PyPy.」 - Python 之父 Guido van Rossum 对于研究人员来说,迅速把想法代码化并查看其是否行得通至关重要.Python ...

  • 【Python爬虫】:使用高性能异步多进程爬虫获取豆瓣电影Top250

    在本篇博文当中,将会教会大家如何使用高性能爬虫,快速爬取并解析页面当中的信息.一般情况下,如果我们请求网页的次数太多,每次都要发出一次请求,进行串行执行的话,那么请求将会占用我们大量的时间,这样得不偿 ...

  • 【Python爬虫】:破解网站字体加密和反反爬虫

    前言:字体反爬,也是一种常见的反爬技术,例如58同城,猫眼电影票房,汽车之家,天眼查,实习僧等网站.这些网站采用了自定义的字体文件,在浏览器上正常显示,但是爬虫抓取下来的数据要么就是乱码,要么就是变成 ...

  • Python 内置函数最全汇总,现看现用

    今天,好好看看这些Python内置函数,也许你明天就能用到Python 内置函数最全汇总:1 abs()绝对值或复数的模In [1]: abs(-6)Out[1]: 62 all() 接受一个迭代器, ...

  • Python学习教程:Python 内置函数最全汇总(上篇)

    Python学习教程:Python 内置函数最全汇总(一) 1 abs() 绝对值或复数的模 In [1]: abs(-6)Out[1]: 6 2 all() 接受一个迭代器,如果迭代器的所有元素都为 ...

  • Python学习教程:Python内置函数大总结(下篇)

    这里接着上次的Python学习教程,给大家总结了Python 剩下的33个内置函数. 31 hash() 返回对象的哈希值 In [112]: hash(xiaoming)Out[112]: 6139 ...

  • python的重点难点——有了这些笔记,让你快人一步成为大神!

    在DOS窗口下,查看python版本 注意V是大写(version,版本的意思) 如果是小写就会导入很多模块. 编码 在默认情况下,python3源码文件以UTF-8编码,所有字符串都是unicode ...

  • 零基础学python,看完这篇文章,你的python基础就差不多了!

    Python基础语法 1. 认识Python 1.1 Python 简介 Python 的创始人为吉多·范罗苏姆(Guido van Rossum). Python 的设计目标: 一门 简单直观的语言 ...