【Python】Python之list类型

【Python】Python之list类型

今天,我们开始学习Python的list类型,这是我们之前没有接触过的一种类型,所以好好学习,记笔记,然后冲冲冲!

Python中创建list

在Python中,有一种内置的数据类型,便是列表:‘list’。list是一种有序的集合,可以随时添加和删除其中的元素。
举个例子,比如我们要列出班里部分同学的名字,就可以用一个list类型来表示:

print(['丁丁','东东','拉拉','小蜗'])

在这里插入图片描述
list是数学意义上的有序集合,也就是说,list中的元素是按照顺序排列的。
构造list类型非常简单,按照上面的代码,直接用 [ ] 把list的所有元素都包括起来,就是一个list对象。通常,我们会把list赋值给一个变量,这样,就可以通过变量来引用list:

mates = ['丁丁','东东','拉拉','小蜗']
print(mates)

我在以前的文章中有提过Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型,我们完全可以在list中包含各种数据:

mates = ['丁丁','东东','拉拉','小蜗',2333,True]
print(mates)

倘若是一个元素也没有的list,那就是空list了。

empty = []
print(empty)

下面我们来分析一道例题:假设班里有3名同学:小明,小红和小白,他们的成绩分别是 100,85 和 59,请按照 名字, 分数, 名字, 分数… 的顺序按照分数从高到低用一个list表示,然后打印出来。
大家可以先想一想,然后么我就给你代码了。
代码如下:

A = ['小明',100,'小红',85,'小白',59]
print(A)

测试结果如下:
在这里插入图片描述

Python按照索引访问list

由于list是一个有序集合,所以我们可以用一个list按分数从高到低表示出班里的3个同学:小明,小红和小白。

rank = ['小明','小红','小白']
print(rank)

那我们如何从list中获取指定第 N 名的同学呢?比如说想要获取小红,方法是通过索引的方式来获取list中的指定元素。
值得特别注意的是,索引从 0 开始,也就是说,第一个元素的索引是0,第二个元素的索引是1,然后以此类推。
所以要打印第一个同学的姓名,就可以用rank[0]来实现;要打印第二名同学的姓名,就用 rank[1];要打印第三名同学的名字,就用 rank[2]。

rank = ['小明','小红','小白']
print(rank[0],rank[1],rank[2])

测试结果如图:
在这里插入图片描述
注意:当我们输入rank[3]的时候,程序会报错(可以自行尝试)。原因其实很简单,我们上面所用的list只有三个元素,所以其有效的索引是rank[0],rank[1],rank[2],所以当输入rank[3]的时候已经超越了该list的范围,自然就报错了。
所以使用索引时,千万注意不要越界。

Python之倒序访问list

我们还是用一个list按分数从高到低表示出班里的3个同学:小明,小红和小白。
这个时候,可恶的老师会说:“请分数最低的同学站出来。”

要写代码完成这个任务,我们可以先数一数这个 list,发现它总共包含了3个元素,因此最后一个元素的索引是rank[2]:

rank = ['小明','小红','小白']
print(rank[2])

那假如我们list中的元素数量很多很多呢,多到无法实现可数性,怎么办呢?
其实 小白同学 是最后一名,俗称倒数第一,所以我们可以用 rank[-1] 这个索引来表示最后一个元素(小白同学表示躺着也中枪):

rank = ['小明','小红','小白']
print(rank[-1])

类似的,倒数第二可以用rank[-2] 表示,倒数第三可以用 rank[-3]来表示。

rank = ['小明','小红','小白']
print(rank[-1],rank[-2],rank[-3])

同样注意:当我们输入rank[-4]的时候,程序会再一次的报错。原因和上文其实一样,因为倒数第四个元素不存在,一共只有3个元素。
所以使用倒序索引时,也要注意不要越界。

Python之添加新元素

还是用这个例子,原来班里有三个同学:小明,小红和小白。

现在班里转来一名新同学 小黑 ,如何把新同学添加到现有的 list 中呢?
第一个办法就是用 list 的 append() 方法,把新同学追加到 list 的末尾位置。
注意append()总是把新的元素添加到 list 的尾部。

mates = ['小明','小红','小白']
mates.append('小黑')
print(mates)

测试如下:
在这里插入图片描述
但是如果 小黑 同学表示自己想要排在第一个位置,那要咋整啊?
莫慌,是有方法的,就是用list的 insert()方法,insert()函数接受两个参数,第一个参数是索引号,第二个参数便是待添加的新元素。

mates = ['小明','小红','小白']
mates.insert(0,'小黑')
print(mates)

测试如下:
在这里插入图片描述
mates.insert(0, ‘小黑’) 的意思是,'小黑’将被添加到索引为 0 的位置上(也就是第一个),而原来索引为 0 的 小明 同学,以及后面的所有同学,都自动向后移动一位。

Python从list删除元素

小黑 同学刚来几天又要转走了,那么我们怎么把小黑从现有的list中删除呢?

如果 小黑 同学排在最后一个,我们可以用list的 pop() 方法删除:

mates = ['小明','小红','小白','小黑']
print(mates.pop())
print(mates)

测试如下:
在这里插入图片描述
pop() 的方法总是删掉list的最后一个元素,并且它还返回这个元素,所以我们执行 print(mates.pop())后,会打印出 ‘小黑’。

如果 小黑 同学不是排在最后一个怎么办?比如 小黑 同学排在第三,那要把小黑删出 list,我们就必须先定位 小黑 的位置。由于小黑的索引是2,因此,用pop(2)把小黑删掉:

mates = ['小明','小红','小黑','小白']
print(mates.pop(2))
print(mates)

测试如下:
在这里插入图片描述
下面我们分析一道问题
注意代码中 list 如下:
mates = [‘小明’,‘小红’,‘小黑’,‘小白’]
小黑的索引是2,小白的索引是3,如果我们要把 小黑 和 小白 都删掉,请解释下面的代码为什么不能正确运行:
mates.pop(2)
mates.pop(3)
怎样调整代码可以把小黑和小白都正确删除掉?
解答:当首先删除索引为 2 的 小黑 时,mates变成了:
mates = [‘小明’,‘小红’,‘小白’]
这时,注意到 小白 的索引已经从原来的3变成2了!
所以我们可以先pop()出小白,再pop()出小黑。
代码如下:

mates = ['小明','小红','小黑','小白']
print(mates.pop(3))
print(mates.pop(2))
print(mates)

测试如下:
在这里插入图片描述

或者我们也可以直接先pop()出小黑,再pop()出小白。
代码如下:

mates = ['小明','小红','小黑','小白']
print(mates.pop(2))
print(mates.pop(2))
print(mates)

测试如下:
在这里插入图片描述
ps:两种删除方式只不过是删除对象的前后顺序不同,但是最后得到的结果是一样的。

list的删除操作还可以使用 remove函数的方法,只需要在变量名字后面加一个句号就可以轻松的调用,PyCharm有自动联想功能,选中目标方法或者函数,按【tab】键即可以快速键入。

以下代码用于删除元素 小黑同学,并且用print函数将结果打印出来。其中remove方法是用于删除list 中的元素。

mates = ['小明','小红','小黑','小白']
mates.remove('小黑')
print(mates)

测试结果如下:
在这里插入图片描述

Python中替换元素

倘若现在班里还是那三个同学:小明,小红和小白。
现在,小白 同学要转学走了,碰巧来了一个小蓝 同学,要更新班级成员名单,我们可以先把小白删掉,再把小蓝 添加进来。

另一个办法是直接用Paul把Bart给替换掉:

mates = ['小明','小红','小白']
mates[2] = '小蓝'
print(mates)

对list中的某一个索引赋值,就可以直接用新的元素替换掉原来的元素,list包含的元素个数保持不变。

由于Bart还可以用 mates[-1]做索引,因此下面的代码也可以完成同样的替换工作:

mates = ['小明','小红','小白']
mates[-1] = '小蓝'
print(mates)

关于Python的list类型我们就简单的讲到这里,喜欢我的文章可以多多关注我哦,笔芯!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值