首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

搬砖的也能玩Python-基础篇2

搬砖的也能玩Python——基础篇

2-常见的基础集合类型1(列表、元组)

关于Python中的方法

在开始讲本篇的内容之前,我们先讲一个方法(函数)的概念,在Python中,方法其实是一种对数据的操作,在我们基础篇1中其实已经用到了方法,那就是print("Hello, World"),我们的print()方法其实是对"Hello, World"这个数据的操作,所进行的操作就是把"Hello, World"输出到控制台。

我们现在只需要知道2种执行方法的方式:

数据后面用句点(.)跟上方法,比如:"abc".upper(),就是通过upper()方法,把abc变成全部大写ABC。

直接执行方法,比如我们的print("Hello, World")。

具体的方法(函数)我们将在后面的文章中去详细讲解。

一、列表

列表,是我们这次讲的第一个集合类型,也是最基本的集合类型,使用也很频繁,尤其是当时在学习爬虫、数据处理的时候,几乎一致在用列表。

列表是什么呢?

列表是由一系列按特定顺序排列的元素组成,元素可以是任何数据,可以是字符串、数字、列表等,而且每个元素的数据类型也可以不同,元素之间也没有任何关系。

列表是用方括号([ ])来表示,用逗号(,)来分隔其中的元素,也就是[元素, 元素, 元素, 元素]。

我们来举几个简单的例子:

[1, 2, 3, 4, 5, 6]

["火箭","马刺","独行侠","灰熊", "鹈鹕"]

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

二、列表的简单操作

我们将从列表元素的访问、修改、增加、删除,四个方面来学习列表的简单操作。

访问列表元素

前面说道列表是有特定顺序的,所以我们要访问列表中的元素,只需要提供元素的位置(索引)就可以了,将索引放在方括号中,紧跟在列表后面即可。

列表[索引]

注意

列表中,第一个元素的索引为0,第二个元素的索引为1,以此类推。

同时我们也可以用负数索引,最后一个元素就是-1,倒数第二个元素就是-2,以此类推,当我们在不知道列表长度的时候可以用负数索引来访问最后的元素。

要想获得列表的长度,我们提供一个方法len()。

len(列表)

修改列表元素

了解了列表元素的访问之后,我们来看一下列表元素的修改,列表元素的修改其实就是给某一索引位置的元素重新赋值,在基础篇1中我们了解到,等号(=)就是表示赋值,等号左边是我们访问的具体元素,等号右边是我们修改后的新值。

列表[索引]=新的值

增加列表元素

下面我们来看一下列表元素的增加,主要有两种方法:

在列表末尾增加元素

在列表任意位置增加元素

1、在列表末尾添加元素

在列表末尾添加元素,我们用append()方法。

列表.append(新元素)

2、在列表任意位置添加元素

我们还是利用了列表是有特定顺序的这一特性,我们使用insert()方法,在指定的索引位置插入新的元素,该索引位置原来的元素以及后面的元素,均向右移一个位置。

列表.insert(索引,新元素)

从上面的例子中我们可以看到,在索引为1的地方,我们插入了一个字符串"马刺",这样原来索引为1的"独行侠"就变成了"马刺",而"独行侠"及其后面的"灰熊"就自动向右移一个位置,索引变成了2和3,这就是insert()方法的使用。

删除列表元素

最后我们来看一下列表元素如何删除,主要有四种方法:

删除指定索引元素(删除后不再使用)

删除指定索引元素(删除后还会使用)

删除末尾元素

删除具体元素值

1、删除指定索引元素(删除后不再使用)

当我们删除指定索引的元素,并且不再使用这个元素时,我们可以用del方法,后面跟具体要删除的指定索引的元素。

del 列表[索引]

由于del方法不会告诉我们删掉的具体元素值是什么,当我们想要知道具体删掉的元素是什么的时候,应该怎么办呢?那就需要下面这种删除方法。

2、删除指定索引元素(删除后还会使用)

我们用pop()方法,可以解决del方法无法告诉我们删除的具体元素值的问题,在pop()方法的括号中,填入要删除的元素的索引即可。

列表.pop(元素索引)

从上面的例子中,我们看到“西南部赛区.pop(3)”是可以被输出来的,我们也可以将“西南部赛区.pop(3)”通过赋值的方式,赋值给一个变量,这样就可以让删除的元素在后面的代码中继续使用。

如果我们使用print(del 西南部赛区[3])的话,是会报错无效的语法。

3、删除末尾元素

其实,pop()方法除了可以删除指定索引的元素外,pop()方法有一个默认的索引,就是最末尾的索引,当我们直接用pop()方法,不在pop()方法的括号中填入索引值时,列表的末尾元素就会被删除。由于是pop()方法,所以我们删除的末尾元素也是可以继续使用的。

列表.pop()

4、删除具体元素值

前面我们都是通过索引来删除元素,那么有没有方法可以直接删除具体的元素呢,答案是有的,方法就是remove(),在remove()方法的括号中,填入要删除的具体元素的值即可。

列表.remove(元素值)

三、元组

了解了列表之后,我们再来看一个跟列表非常像的集合类型——元组,元组就是不能修改的列表,将用中括号([ ])表示的列表变成圆括号(( )),就是元组了。

我们把上面的几个简单的例子变成元组:

(1, 2, 3, 4, 5, 6)

("火箭","马刺","独行侠","灰熊", "鹈鹕")

([1, 2, 3], [4, 5, 6], [7, 8, 9])

由于元组是不能修改的列表,所以我们只能访问元组的元素,不能增加、修改、删除元组的元素。

访问元组元素

元组中元素的访问跟列表完全一样,只需要提供元素的位置(索引)就可以了,将索引放在方括号中,紧跟在元组后面即可。

元组[索引]

四、切片

最后我们来学习一个特别好玩的操作,叫切片。在了解切片之前,我们先来思考下面这个问题。

思考

假设有一个列表A:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],此时我们想创建另一个列表B,元素取列表A的前5个元素,利用前面学的内容,我们应该怎么做?

解析

我们可以很容易想到,A的前5个元素分别是A[0] A[1] A[2] A[3] A[4],所以我们的列表B就可以这样写:B = [A[0], A[1], A[2], A[3], A[4]]

但是,如果一个列表的元素非常多,要取的元素也非常多的时候,我们还是要这样写吗?这样写起来就会非常的复杂,效率也非常的低。

在Python中,提供了一个非常好的切片操作,可以很好的解决上述问题,切片的格式如下:

列表[A:B]或列表[A:B:C]

元组[A:B]或元组[A:B:C]

字符串[A:B]或字符串[A:B:C]

其中,[A:B]或[A:B:C]就是我们的切片范围,A、B是索引值,可以为空,C为步长,当没有C的时候,默认步长为1。

下面我们来具体学习一下:

[A:B]

当切片是[A:B]的格式时,就说明我们取的索引的范围为:

A≤索引

表示从索引为A的元素开始取,一直取到索引为B-1的元素,索引为B的元素不会取到,并且步长为1,说明是连续取;

当A为空时,表示从第一个元素(索引为0的元素)开始取,一直取到索引为B-1的元素;

当B为空时,表示从索引为A的元素开始,一直取到最后一个元素;

当A和B均为空时,表示完全复制一个相同的列表。

由于我们也支持负数索引,所以A和B也可以为负数。

我们来看几个例子:

这个例子中,切片为[1:3],也就是从索引1取到索引2,列表A中,索引1的元素是2,索引2的元素是3,所以列表B的值最终为[2, 3]。

这个例子中,切片为[-4:-1],也就是从索引-4取到索引-2,列表A中,索引-4的元素为6,索引-2的元素为8,所以列表B的值最终为[6, 7, 8]。

这个例子中,切片为[2:],也就是从索引2取到最后一个元素,列表A中,索引2的元素为3,最后一个元素为9,所以列表B的值最终为[3, 4, 5, 6, 7, 8, 9]。

这个例子中,切片为[-2:],也就是索引-2取到最后一个元素,列表A中,索引-2的元素为8,最后一个元素为9,所以列表B的值最终为[8, 9]。

这个例子中,切片为[:3],也就是从第一个元素开始取,取到索引为2的元素,第一个元素是1,索引为2的元素是3,所以列表B的值最终为[1, 2, 3]。

这个例子中,切片为[:],也就是完全复制一个列表,所以列表B的值最终为:[1, 2, 3, 4, 5, 6, 7, 8, 9]。

[A:B:C]

当切片是[A:B:C]的格式时,就说明我们取的索引的范围为:

A≤索引

表示从索引为A的元素开始取,一直取到索引为B-1的元素,索引为B的元素不会取到,并且步长为C,说明是从索引为A的元素开始,每C个元素取一次,每次取这C个元素中的第一个元素。

A、B的含义跟[A:B]中的一样,我们主要来举例看一下加了步长C之后是如何取值的:

这个例子中,切片为[::3],前面的一个冒号(:),说明是完全复制一个列表,后面的冒号3(:3),说明是步长为3,也就是从头开始,每3个元素取一次,每次取这3个元素中的第一个元素。

从第一个元素1开始,每3个元素一组,就是[1, 2, 3] [4, 5, 6] [7, 8, 9],然后每次取第一个元素,所以列表B的值最终为:[1, 4, 7]。

这个例子中,切片为[3:7:2],前面的[3:7],说明是从索引为3的元素开始取到索引为6的元素,后面的冒号2(:2),说明步长为2,也就是从索引为3的元素到索引为6的元素,每2个元素取一次,每次去这2个元素中的第一个元素。

索引为3的元素是4,索引为6的元素是7,每2个元素一组,就是[4, 5] [6, 7],然后每次取出第一个元素,所以列表B的值最终为:[4, 6]。

切片扩展

不仅可以对列表数据进行切片,由于元组是不能修改的列表,自然也可以对元组进行切片。另外,还有一个可以进行切片的数据,那就是字符串,我们把字符串中的每一个字符都可以看做一个元素。

当然我们要注意的是,切片只是为了截取一个数据的某个片段,并不会影响数据本身的类型,所以对列表的切片得到的结果还是列表,对元组的切片得到的结果还是元组,对字符串的切片得到的结果还是字符串。

最后,我写几个各种数据类型的切片例子和结果,大家自己分析一下为什么是这样的结果。

To Be Continued

下篇文章我们将继续学习一个很重要的集合类型——字典,同时我们也会学习列表、字典之间的嵌套,以及嵌套之后的数据访问等等,希望大家持续关注。

探测八个蛋∣跳出手工测试的井

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180112G00OSL00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券