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

python渐进-list列表

6.1 list

list是这样的数据结构,它把数据存放在一个序列里面,在访问的时候按照数据的序号进行访问。本篇文章介绍list的使用。

6.1.1 创建一个list

创建一个list可以用中括号括起的逗号分隔的数据进行创建。演示代码如下。

如果在创建list的时候不确定会有哪些数据会插入,可以先创建一个空的list,以后再插入。创建空list的演示代码如下。

6.1.2 访问list数据

list里面的数据都对应了一个序号。序号从0开始。像前面的[1,2,3,4]序列,第一个数据的序号是0,第二个数据的序号是1,如此类推。想要访问某个数据,可以根据序号来访问。演示代码演示了访问第三个元素。

序号也是可以为负的,序号为-1代表list的最后一个数据。

上面的两种情况都是用来访问单个数据的,如果想要访问多个数据,可以使用切片操作。切片操作返回的是一个子list。

切片操作使用:来分隔,分号前面是开始的序号,分号后面是结束的序号。结束序号对应的那个数据不会被包含在内。比如说a[s:e]访问的数据是第s个~第e-1个。下面的演示代码展示了访问1到2-1位置的数据。

在做切片操作访问list的时候,如果想要隔几个取一次数据,可以设置步长。步长的设置需要再加一个:号。下面的演示代码就展示了取list中0到3-1位置的数据,并且每隔2个取一次。

当切片操作参数为空,则默认开始序号为0,而默认结束序号为列表的长度,默认步长为1。下面的演示代码就展示了开始序号、结束序号、步长全是空的情形。

list是一个序列,可以直接使用for语句进行循环访问。

6.1.3 增加和修改list数据

list是可变变量,可以往一个list里面增加数据,或者修改list中某个位置对应的数据。

若想要在list末尾添加一个数据,可以使用append()方法进行添加。演示代码如下。

若要在list中某个位置插入一个数据,可以使用insert()方法。其中第一个参数是位置,而第二个参数是数据。演示代码如下。

如果想要修改list中的一个元素,可以通过赋值直接修改。比如我想要把第三个元素修改成2,演示代码如下

通过切片操作可以同时修改list中的多个元素。比如说我想要把1到3-1的元素修改为3和4,演示代码如下:

如果想要把两个list连接起来,可以直接把它们相加。演示代码如下。

6.1.4 删除list数据

使用del可以删除list指定位置的数据。

直接删除单个元素。演示代码如下

也可以通过切片操作删除多个元素。演示代码如下。

要注意的是使用for循环删除可能会产生问题。

上述程序原本是是想要删除位置1和2的元素,也就是元素2和元素3。但是删除了位置1的元素2之后,元素3的位置变成1了,结果此时序号为2的元素4被删掉了。所以在for循环里面使用del来删除元素需要慎重。

6.1.5 list的有用函数

使用list的时候经常需要知道list有多少个数据元素。这个可以通过len函数来获取。

list进行排序,这个可以通过sort函数来达到。

如果想要倒序排序,可以在sort里面添加reverse=True参数。

6.1.6 list的列表推导式

使用list的列表推导式,可以用更简洁的语句得到一个list。列表推导式是由一个for循环语句开始,可以嵌套多个for循环或者if条件判断。最简单的列表推导式为:

列表推导式=[生成的列表元素for参照列表元素in参照列表if某个条件为真]

举个例子,如果想要快速填充一个3个元素的列表,每个元素都为0。那么生成的列表元素是0,这个时候参照列表用来控制循环次数。演示代码如下:

如果想要在循环访问参照列表的时候加入if判断,比如说想把另外一个列表的大于0的元素取出来,那么可以加入if语句,演示代码如下:

for语句可以嵌套for语句,如果有两个参照列表的话。比如说想要把两个列表的元素进行组合,则可以嵌套两个for语句,演示代码如下:

6.1.7 使用list构造二维数组

二维数组是很常用的数据组织形式。二维数组有n行,m列数据,访问第i行和第j列的数据,就通过行和列的索引来获取。

在一个list里面嵌套多个list,可以生成一个二维数组。演示代码如下:

可以看到这个list由两个行list组成,每个行list又有3个数据。

想要访问第i行和第j列的数据,可以先定位行,再定位列。要注意的是,list的行和列都是从0开始计算的。因此要访问第1行第3列的数据,行索引为0和而列索引为2。

二维数组也支持切片操作,感兴趣的话可以进去绕一绕。

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券