Python语法之列表

简介: 我们都知道变量只能被赋值为一个值,现在我们想把八位神仙的名字同时赋值,该如何实现呢?在 Python 中,我们可以通过列表来实现。列表是有序数据的集合。定义的语法是使用方括号 [ ] 括起来以逗号分隔的数据。

八仙过海是一个中国民间故事,讲了汉钟离、张果老、韩湘子、铁拐李、吕洞宾、何仙姑、蓝采和和曹国舅八位神仙各显神通渡海的故事。

我们都知道变量只能被赋值为一个值,现在我们想把八位神仙的名字同时赋值,该如何实现呢?在 Python 中,我们可以通过列表来实现。列表是有序数据的集合。定义的语法是使用方括号 [ ] 括起来以逗号分隔的数据。

eight_immortal = ['汉钟离', '张果老', '韩湘子', '铁拐李', '吕洞宾', '何仙姑', '蓝采和', '曹国舅']
print(eight_immortal)

eight_immortal 就是一个列表,[ ]包含的每一个信息称为元素,'汉钟离'、'张果老'、'韩湘子'等就是元素。在 Python 中,列表有如下特性:

图片.png

1.有序

列表不仅是数据的集合,而且这些数据还是有序的。如果两个列表所包含的元素是相同的,但是元素的排列顺序不同,那么他们是两个不同的列表。

eight_immortal1 = ['汉钟离', '张果老', '韩湘子', '铁拐李', '吕洞宾', '何仙姑', '蓝采和', '曹国舅']
eight_immortal2 = ['吕洞宾', '何仙姑', '蓝采和', '曹国舅', '汉钟离', '张果老', '韩湘子', '铁拐李']
print(eight_immortal1 == eight_immortal2)

在上面的例子中,虽然包含的元素是相同的,都是八仙的名字,但是元素的顺序是不同的,所以是不同的两个列表。

2.元素的数据类型

同样的一个列表可以包含不同类型的数据。

eight_immortal = ['汉钟离', 1, '张果老', 2, '韩湘子', 3, '铁拐李', 4,'吕洞宾', 5, '何仙姑', 6, '蓝采和', 7, '曹国舅', 8]
print(eight_immortal)

在上面的例子中既包含了字符串类型的数据,同时也包含了整数类型的数据。使用引号包含的的数据类型是字符串!

3.元素可以重复

eight_immortal1 = ['铁拐李', '铁拐李', '何仙姑', '何仙姑', '蓝采和', '蓝采和']
print(eight_immortal1)

在上面的例子中,'铁拐李', '何仙姑', '蓝采和' 这三个元素是重复的。

4.元素的访问

八仙兴高采烈地来到蓬莱阁上聚会饮酒。酒至酣时,铁拐李意犹未尽,对众仙说:“都说蓬莱、方丈、瀛洲三神山景致秀丽,我等何不去游玩、观赏?”众仙激情四溢,齐声附和。吕洞宾说:“我等既为仙人,今番渡海不得乘舟,只凭个人道法,意下如何?”众仙听了,欣然赞同,一齐弃座动身而去。我们现在想从列表 eight_immortal 中提取出建议游玩三神山的铁拐李,要怎么操作呢?

大家可以一起回想下在介绍字符串时,介绍给大家的访问字符串中某一个字符的方法——索引,

我们可以通过索引的方式来访问列表中的元素,这个和访问字符串中的字符的原理是一样的。从前往后访问时,索引的下标从 0 开始。

我们看下 eight_immortal 这个列表的八仙的各个位置:

图片.png

我们想要访问铁拐李,铁拐李的下标位置是3,我们只需要使用索引的方式:列表名[下标],也就是eight_immortal[3] 就可以了,我们一起来验证下,点击运行:

eight_immortal = ['汉钟离', '张果老', '韩湘子', '铁拐李', '吕洞宾', '何仙姑', '蓝采和', '曹国舅']
print(eight_immortal[3])

下面的语句,大家在点击运行前,先自己判断下访问的是八仙中的哪一位呢?再运行,对比下结果!

eight_immortal = ['汉钟离', '张果老', '韩湘子', '铁拐李', '吕洞宾', '何仙姑', '蓝采和', '曹国舅']
print(eight_immortal[0])
print(eight_immortal[4])
print(eight_immortal[7])

和访问字符串中的字符一样,我们还可以从后往前访问,当从后往前访问时,索引的下标从 -1 开始。

图片.png

使用从后往前的索引,我们访问铁拐李的语句是:

eight_immortal = ['汉钟离', '张果老', '韩湘子', '铁拐李', '吕洞宾', '何仙姑', '蓝采和', '曹国舅']
print(eight_immortal[-5])
eight_immortal = ['汉钟离', '张果老', '韩湘子', '铁拐李', '吕洞宾', '何仙姑', '蓝采和', '曹国舅']
print(eight_immortal[-8])
print(eight_immortal[-4])
print(eight_immortal[-1])

当我们想一次访问列表中的多个元素时,比如我们想访问铁拐李、吕洞宾、何仙姑时,就可以使用切片啦!

切片操作对列表同样是适用的,语法是 列表名[m:n],访问的元素从索引 m 开始到索引 n 结束,不包括 n。

当不指定 m 和 n 时,也就是列表名[:] 访问的是整个列表;

当只指定 m ,不指定 n 时,列表名[m:] 访问的是从索引 m 开始,一直到列表结束的元素;

当只指定 n ,不指定 m 时,列表名[:n]访问的是从索引 0 开始,一直到索引 n  的元素,不包括索引 n 对应的元素。

铁拐李在列表中的位置是 3,吕洞宾是 4,何仙姑是 5,因此访问他们三个的语句是 eight_immortal[3:6]

eight_immortal = ['汉钟离', '张果老', '韩湘子', '铁拐李', '吕洞宾', '何仙姑', '蓝采和', '曹国舅']
print(eight_immortal[3:6])
print(eight_immortal[2:])
print(eight_immortal[:5])
print(eight_immortal[:])

同样的还可以使用负数索引。

eight_immortal = ['汉钟离', '张果老', '韩湘子', '铁拐李', '吕洞宾', '何仙姑', '蓝采和', '曹国舅']
print(eight_immortal[-5:-2])
print(eight_immortal[-5:])
print(eight_immortal[:-2])
print(eight_immortal[:])

在进行切片操作时,还可以指定索引的步长。

我们首先一起了解下步长指的是什么?

大家小的时候有没有下过跳棋,我们可以往前跳一步,就是跳一个格子,步长即为 1;也可以跳两步,就是跳两个格子,步长就是 2,我们一起来看下 eight_immortal 这个列表各元素间的步长:

图片.png

了解步长的含义之后,我们来看步长的表达。

列表名[m:n:步长] 步长在实际的编程中,是用数据表示的,1 表示 1 步,2 表示 2 步,步长也可以省略,省略时步长默认为 1。

我们一起来看下下方语句:

大家在运行前,先自己判断下运行结果:

eight_immortal = ['汉钟离', '张果老', '韩湘子', '铁拐李', '吕洞宾', '何仙姑', '蓝采和', '曹国舅']
print(eight_immortal[0:7:2])

5.列表可以嵌套

列表中的元素同样可以是一个列表。

my_list = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', ['hh', 'ii'], 'j']
print(my_list)

我们看到在 my_list 这个列表中有 5 个元素,其中 3 个是字符型,2 个是列表,而['bb',['ccc','ddd'],'ee','ff'] 这个列表中又嵌套了一个列表,在判断列表中的嵌套时,我们主要是根据[]来进行判断:

图片.png

嵌套的列表共占元素的一个位置,具体位置信息我们一起来看图:

图片.png

我们看到对于只嵌套一个的列表,访问其中某个元素时,索引的使用方法是列表名[嵌套列表的位置][所需访问的元素在嵌套列表的位置],比如,我们想访问hh,方法就是my_list[3][0],3 是嵌套列表在 my_list 中的位置,0 是 hh 在嵌套列表中的位置。

如果我们想访问 ddd,索引为 my_list[1][1][1]。

我们一起看下下方语句,还是在运行前,我们先判断下结果哈!

my_list = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', ['hh', 'ii'], 'j']
print(my_list[0])
print(my_list[1])
print(my_list[1][0])
print(my_list[1][1][0])

6.列表元素可以修改

6.1 改变元素的值

6.1.1 一次改变一个值

逍遥闲散的汉钟离,把手中的芭蕉扇甩开扔到大海里,那扇子大如蒲席,他醉眼惺忪地跳到迎波踏浪的扇子上,悠哉悠哉地向大海深处漂去。清婉动人的何仙姑步其后尘,将荷花往海里一放,顿时红光四射,花像磨盘,仙姑亭亭玉立于荷花中间,风姿迷人。众仙谁也不甘落后。吟诗行侠的吕洞宾、倒骑毛驴的张果老、隐迹修道的曹国舅、振靴踏歌的蓝采和、巧夺造化的韩湘子、借尸还魂的铁拐李纷纷将宝物扔入海中。瞬间,百舸争流,各显神通,逞雄镇海,悠然地遨游在万顷碧波之中。

我们现在想把列表中的'汉钟离'修改成'逍遥闲散',把列表中的'何仙姑'修改成'清婉动人',我们可以先使用索引定位到需要修改的元素位置,再通过赋值的方式将修改后的内容赋值给对应元素:eight_immortal[0] = '逍遥闲散'eight_immortal[5] = '清婉动人'

eight_immortal = ['汉钟离', '张果老', '韩湘子', '铁拐李', '吕洞宾', '何仙姑', '蓝采和', '曹国舅']
eight_immortal[0] = '逍遥闲散'
eight_immortal[5] = '清婉动人'
print(eight_immortal)

6.1.2 一次改变多个值

现在我们想将'汉钟离'修改成'逍遥闲散','张果老'修改成'倒骑毛驴','韩湘子'修改成'巧夺造化',

当然我们可以采用逐一修改的方式,但是代码规范中有一个要求就是代码的简洁程度,能同时修改的值尽量不多次修改,下面呢,我们就给大家介绍可以一次性修改多个值的方法:

我们观察到在 eight_immortal 列表中,'汉钟离'、'张果老'、'韩湘子'是可以通过切片的方式同时访问到的,因此我们先通过切片定位到这些元素的位置,再将修改后的值通过[]逐一赋值给他们。

eight_immortal = ['汉钟离', '张果老', '韩湘子', '铁拐李', '吕洞宾', '何仙姑', '蓝采和', '曹国舅']eight_immortal[0:3] = ['逍遥闲散', '倒骑毛驴','巧夺造化']

eight_immortal = ['汉钟离', '张果老', '韩湘子', '铁拐李', '吕洞宾', '何仙姑', '蓝采和', '曹国舅']
eight_immortal[0:3] = ['逍遥闲散', '倒骑毛驴','巧夺造化']
print(eight_immortal)

我们也可以将列表中元素的值修改为整型,比如下方语句

eight_immortal = ['汉钟离', '张果老', '韩湘子', '铁拐李', '吕洞宾', '何仙姑', '蓝采和', '曹国舅']
eight_immortal[0:3] = [10, 20, 30]
eight_immortal[-5:-1] = [40, 50, 60, 70]
print(eight_immortal)

6.2 删除元素

我们想把八仙中的张果老从列表中删除,只需要使用 del 就可以了

del 列表名[],铁拐李在列表中的位置为 eight_immortal[1],因此删除语句为  del eight_immortal[1]

eight_immortal = ['汉钟离', '张果老', '韩湘子', '铁拐李', '吕洞宾', '何仙姑', '蓝采和', '曹国舅']
del eight_immortal[1]
print(eight_immortal)

我们也可以使用 del 来进行多个元素的删除,del 列表名[m:n],我们运行下方语句:

eight_immortal = ['汉钟离', '张果老', '韩湘子', '铁拐李', '吕洞宾', '何仙姑', '蓝采和', '曹国舅']
del eight_immortal[0:3]
print(eight_immortal)

6.3 使用+往列表中增加元素

八仙的传说起源很早,但人物有多种说法。如淮南八仙,所指西汉淮南王刘安著成《淮南子》的八公,淮南王好神仙丹药,后世传其为仙。五代时道士作画幅为蜀中八仙,所画人物有容成公、李耳、董仲舒、张道陵、严君平、李八百、范长生、尔朱先生。

现在我们想把容成公、李耳、董仲舒、张道陵、严君平、李八百、范长生、尔朱先生都包含在列表eight_immortal中,该怎么添加呢?

在 Python 中,我们使用+往列表中添加元素,添加的元素会自动的被添加到列表尾部:列表名 += [元素1,元素2,元素3,...,元素n]因此语句为:

eight_immortal = ['汉钟离', '张果老', '韩湘子', '铁拐李', '吕洞宾', '何仙姑', '蓝采和', '曹国舅']
print(eight_immortal)
eight_immortal += ['容成公', '李耳', '、董仲舒','张道陵','严君平','李八百','范长生','尔朱先生']
print(eight_immortal)

我们看到添加的内容在列表 eight_immortal 原有元素之后。

6.4 改变列表的方法

6.4.1 append()

除了使用+,append() 也可以为列表添加元素,和+一样,也是在列表的结尾处添加元素,可以添加一个元素或列表。我们看下方语句:

eight_immortal = ['汉钟离', '张果老', '韩湘子', '铁拐李']
print(eight_immortal)
eight_immortal.append('吕洞宾')
print(eight_immortal)
eight_immortal.append(['何仙姑', '蓝采和', '曹国舅'])
print(eight_immortal)

使用+和append()都是在列表的结尾处添加元素,那如果是想在列表的开始处添加元素或者是在列表中的任意位置添加元素需要如何实现呢?

6.4.2 insert()

在 Python 中,insert() 可以在指定位置插入一个元素或列表。语法是:insert(n, 需要添加的元素/列表值),n 为需要插入元素或列表的指定位置。

eight_immortal = ['汉钟离', '张果老', '韩湘子', '铁拐李']
print(eight_immortal)
eight_immortal.insert(3, '吕洞宾')
print(eight_immortal)
eight_immortal.insert(4, ['何仙姑', '蓝采和', '曹国舅'])
print(eight_immortal)

在列表的指定位置插入了相应的元素和列表。

6.4.3  remove()

我们可以在列表中添加元素,也可以删除元素,我们使用 remove(元素值)  从列表中删除指定的元素,如果指定的元素在列表中不存在,则会报错。比如:

eight_immortal = ['汉钟离', '张果老', '韩湘子', '铁拐李', '吕洞宾', '何仙姑', '蓝采和', '曹国舅']
print(eight_immortal)
eight_immortal.remove('汉钟离')
print(eight_immortal)
eight_immortal.remove('骆宾王')

6.4.4 pop(index)

除了 remove(),我们还可以使用 pop(index) 来删除指定元素,index 为元素在列表中的位置。pop(index) 语法规则为:列表名.pop(index),从列表中删除指定索引上的元素,如果不指定 index,默认删除最后一个元素。

eight_immortal = ['汉钟离', '张果老']
print(eight_immortal)
eight_immortal.pop()
print(eight_immortal)

我们看到 pop() 没有指定元素位置,则列表中最后一个元素'张果老'被删除了。我们再一起看下指定元素位置的情况,运行下方语句:

eight_immortal = ['汉钟离', '张果老', '韩湘子', '铁拐李', '吕洞宾', '何仙姑', '蓝采和', '曹国舅']
print(eight_immortal)
eight_immortal.pop(1)
print(eight_immortal)

我们看到列表中删除了指定元素'张果老'。

都是删除元素,pop()和 remove() 主要有两点不同:

pop()传入的参数为索引值,而不是具体的元素值。
pop()的返回值为删除的元素。

我们可以通过一个变量,来看下 pop() 的返回值

eight_immortal = ['汉钟离', '张果老', '韩湘子', '铁拐李', '吕洞宾', '何仙姑', '蓝采和', '曹国舅']
name = eight_immortal.pop(1)
print(name)

打印出的结果是张果老,也就是 pop(1) 返回的值。

相关文章
|
2月前
|
IDE 数据挖掘 开发工具
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
41 7
|
16天前
|
索引 Python
Python列表
Python列表。
42 8
|
18天前
|
C语言 Python
[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
本文介绍了Python的关键字列表及其使用规则。通过回顾`hello world`示例,解释了Python中的标识符命名规则,并探讨了关键字如`if`、`for`、`in`等不能作为变量名的原因。最后,通过`import keyword`和`print(keyword.kwlist)`展示了Python的所有关键字,并总结了关键字不能用作标识符的规则。
30 9
|
26天前
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
53 14
|
28天前
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
40 10
|
2月前
|
存储 索引 Python
Python 的基本语法
这些是 Python 的基本语法要素,掌握它们是学习和使用 Python 的基础。通过不断地实践和应用,你将能够更深入地理解和熟练运用这些语法知识,从而编写出高效、简洁的 Python 代码
81 5
|
2月前
|
数据处理 开发者 Python
Python中的列表推导式:简洁高效的数据处理
在编程世界中,效率和可读性是代码的两大支柱。Python语言以其独特的简洁性和强大的表达力,为开发者提供了众多优雅的解决方案,其中列表推导式便是一个闪耀的例子。本文将深入探讨列表推导式的使用场景、语法结构及其背后的执行逻辑,带你领略这一特性的魅力所在。
|
2月前
|
存储 Python
Python编程入门:理解基础语法与编写简单程序
本文旨在为初学者提供一个关于如何开始使用Python编程语言的指南。我们将从安装Python环境开始,逐步介绍变量、数据类型、控制结构、函数和模块等基本概念。通过实例演示和练习,读者将学会如何编写简单的Python程序,并了解如何解决常见的编程问题。文章最后将提供一些资源,以供进一步学习和实践。
50 1
|
2月前
|
开发者 Python
探索Python中的列表推导式:简洁而强大的工具
【10月更文挑战第41天】 在编程的世界中,效率与简洁是永恒的追求。本文将深入探讨Python编程语言中一个独特且强大的特性——列表推导式(List Comprehension)。我们将通过实际代码示例,展示如何利用这一工具简化代码、提升性能,并解决常见编程问题。无论你是初学者还是资深开发者,掌握列表推导式都将使你的Python之旅更加顺畅。
|
2月前
|
Python
探索Python中的列表推导式
【10月更文挑战第38天】本文深入探讨了Python中强大而简洁的编程工具——列表推导式。从基础使用到高级技巧,我们将一步步揭示如何利用这个特性来简化代码、提高效率。你将了解到,列表推导式不仅仅是编码的快捷方式,它还能帮助我们以更加Pythonic的方式思考问题。准备好让你的Python代码变得更加优雅和高效了吗?让我们开始吧!