2、Python基础之列表及其操作

目录

一、列表的基本概念

二、列表之增删改

1、修改列表元素

2、添加列表元素

3、删除列表元素

三、组织列表

1、用sort()方法对列表永久排序。

2、用sorted()方法对列表临时排序

3、用reverse()方法反转列表的元素顺序

4、用len()方法获取列表长度

四、操作列表

1、遍历列表

2、创建数值列表

3、使用列表的一部分——切片

4、元组


一、列表的基本概念

列表由一系列按特定顺序排列的元素组成。Python的列表用[](方括号)表示,元素由逗号分隔。元素可以是字符,也可以是数字,或者其他任何东西

且看示例:

嗯,像图中mixed这种乱炖形式也是可以的。 

 列表是有序的集合,因此可以通过索引去访问元素,语法为name[index]

和许多编程语言一样,Python的索引也是从0开始的。

但在获取列表元素时,也要注意索引不能超出列表长度,否则会报错:

Python还提供了另外一种获取列表元素的方式:负数索引,表示列表中倒数第几个元素。

 

负数索引也不能超出列表长度。这里不赘述了,可以自己尝试一下。

无论是正数索引还是负数索引,在列表为空时都存在索引越界错误,值得注意。

二、列表之增删改

1、修改列表元素

指定列表名及待修改元素的索引位置即可:

2、添加列表元素

可以通过append()方法在列表末尾添加元素: 

 

 也可以通过insert()方法在列表的任意位置添加新元素

可以看到,当我们试图在超出列表长度的索引位置添加元素时,依然可行,Python将其自动排列到了列表的末尾处。

联想一下前边,超索引获取元素时会报错,而超索引添加元素则没问题。这意思就是,我没有的你别要,但你可以给我😎。

3、删除列表元素

可以使用del()语句,删除指定位置的列表元素

注意:一旦元素被删除,就无法再访问了 ;如果索引值超过列表长度,删除会报错。

也可以使用pop()方法删除列表末尾的元素(即弹栈)

 你会发现,我们是可以捕获到被pop出去的元素(Jeep)的。至于怎么处理它,就看你的心情了~啊不对,是看你的业务 。

捕获的前提是,你要用一个变量去接住它,否则它就摔死了,死无全尸的那种。所谓一时pop一时爽,一直pop弹光光!

 可以通过pop(index)来删除列表中任意位置的元素

 此处,index也是不可以超过列表长度的。

可以通过remove()方法删除指定内容的元素,而不必关心其索引位置

 注意:remove()方法只能删除列表中第一个指定的值。如果要删除的值在列表中有多个,需要使用循环。这里暂不做介绍(其实是我还没有学到~)

三、组织列表

一些可以改变列表中元素排列顺序的方法。

1、用sort()方法对列表永久排序。

sort()将元素按照字母顺序排列,大小写对排序结果没有影响。永久排序,表示排序后无法复原到原来的顺序了。

也可以使元素按照字母顺序反向排列,只需给sort()方法传递一个参数 reverse=True 即可。注意True首字母大写。

2、用sorted()方法对列表临时排序

如果想保留元素的原始顺序,同时还想通过某种特定的顺序来展示,可以使用sorted()方法。

同样的,sorted()方法也可以通过参数reverse=True达成反向排列。

但是——sorted()方法是关心大小写的。我们可以通过代码片段来了解一下:

 结果表明,首字母大写的元素和首字母小写的元素,是分开排序的。

3、用reverse()方法反转列表的元素顺序

reverse()方法只针对列表元素的原始顺序,与字母顺序无关。

(注意图片里的红字说明)

4、用len()方法获取列表长度

除了len()方法,也可以通过列表的自有属性__len__()来获取长度,结果是一样的。

四、操作列表

1、遍历列表

Python中的for循环来了。不同于java的大括号,Python的循环体没有指定起止符号,而是通过缩进来判断一行代码是否在循环体中。for语句之后,所有的循环体语句都要缩进,直到碰到不缩进的行,系统判定循环体结束。

我们先看看代码示例:

这张图除了解释for循环的运行方式,还有两点值得注意的地方。其一,是for语句末尾的冒号,是不可缺少的,否则会报错;其二,是for循环结束之后,仍然可以获取到最后一次循环的内容。这与java大相径庭。

相较于java的for循环,我个人不太喜欢Python的循环表达方式,万一循环内容很长、代码行数很多,不排除有缩进处理错误的可能,其结果是:要么循环在不该结束的地方提前结束,要么在该结束的地方没有结束,导致输出了一些本不该循环输出的内容(或者其他操作)。虽然,有经验者可以很轻松的避免这个问题,但是~谁敢100%保证呢?希望是我作为初学者杞人忧天了。

2、创建数值列表

Python中可以使用range()函数生成数字集合。range()函数有两种参数传递方式:一种是指定起始值,生成从第一个参数开始,到第二个参数停止的数值列表,遵循左闭右开原则;另一种是只传入一个参数,生成从0开始到入参停止的数值列表,同样遵循左闭右开。如图:

 这里需要注意,入参需为整数,不可以是浮点数。此外,如果传入了负数,程序不会报错,但结果是空的,这样没有意义。

进一步的,我们可以使用list()函数将range()的结果直接转换为列表:

 

使用range()函数时,还可以指定步长(间隔)。为此,需要给list()函数指定第3个参数,Python将根据这个参数来生成列表内容。如下图所示:

在上图中,range()函数从2开始,每次+3,直到达到或超过22为止。

下面,我们演示一个小例子:创建一个由1~10的平方组成的列表

这段代码是不是很简洁?Python通过列表解析可以只用一行代码就完成上面的功能!下图:

要使用这种语法,首先声明一个列表(squares_2),然后在方括号中定义一个表达式(value**2),用于生成列表值。 接下来编写一个for循环,用于给表达式提供值。

需要注意,这种场景下的for循环末尾没有冒号。

前后两段代码的运行结果是一致的。

我们还可以通过一些便捷的函数对列表进行一些统计计算:

最小值、最大值、求和,都是一句话搞定! 虽然java也可以这么用,但那些函数是需要自己编写的- -。总体感受就是便捷、强大,分分钟好评!

3、使用列表的一部分——切片

列表的部分元素,Python称之为切片。要创建切片,可指定要使用的第一个元素和最后一个元素的索引。和range()函数一样遵循左闭右开原则。如图:

获取切片时,索引是可以摆很多pose的😈:

 还可在获取切片时输入第三个参数,表示在指定范围内每隔多少元素取一个:

遍历切片:for循环中使用切片,和遍历列表是一样的

上图示例可以看到,取切片时终止index可以越界,这时系统默认取到列表末尾。

这不是什么重要知识点,只是我开了脑洞后的一个小实验,不清楚有没有实用价值。

复制列表

要复制列表,需要创建一个包含所有列表元素的切片。这时,原列表和切片可以各自进行一些操作而互不干扰。复制的方法,就是[:]

如果不使用切片,进行列表复制得到的结果可能不是我们想要的: 

这样复制,是真的复(行)制(不)了(通)...想要的不想要的都一式两份,惊不惊喜?

这是因为将my_games(而不是my_games的副本)赋给了other_games,此时Python将两个变量指向同一个列表。这种情况下,不管你对哪个变量进行操作,结果都会同时反馈到另一边去。图中相同的输出结果证明了这一点。

4、元组

元组就是不可变的列表。

元组和列表非常相近,只不过列表用中括号[]表示,而元组用小括号()表示。定义元组之后,就可以通过索引来访问元素。

我们说元组是不可变的列表,意思是无法通过修改元素来改变元组,如图:

那么,我的好奇心上来了怎么办?强迫症犯了怎么办?就想改一改......办法还是有的😄

 不能修改元组的元素,但是可以直接改元组!重新给它赋值就OK了!

俗话说,一根筷子被折断,十根筷子抱成团。怎么到了元组这里,一根筷子折不断,十根筷子被团灭了呢? 

元组也可以进行遍历操作,方式和列表是一样的,就不举例了,偷个懒。

(完)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值