python 列表切片_【Python技术入门7】Python列表的详细用法

列表是Python语言中内置的有序、可变的元素集合,是Python语言中最常用的数据类型。列表的元素类型可以为任意的数据类型,如整数、也就是说,同一个列表中的每个数据的类型可以各不相同。列表的使用非常灵活,是Python语言面试中面试官最爱问的知识点之一。 01 列表的定义

使用中括号([])来定义列表,所有元素放在一对中括号([])中,并使用逗号分隔其中的元素。

列表里面的元素类型可以是任意类型,如整数、浮点数、字符串,还可以是列表(list)、元组(tuple)、集合(set)、字典(dict)以及自定义类型的对象

list0 = []   #空列表list1 = [1,2,3,4,5]list2 = [2020, '第1年20万', '第2年25万',  '第3年40万']list3 = [ (2020, 20), [2021, 25], [2022, 40]]list4 = ["我的Python学习目标", {"2021年": "25万", "2022年": "40万"}] #列表的元素可以是任意类型
02列表元素的访问

列表是有序元素的集合,通过整数索引直接访问列表的元素。列表中第一个元素的索引是0,第二个元素的索引是1,…,索引依次加1,直到[列表长度-1]。

#我的薪资目标list1 = ['第1年20万', '第2年25万',  '第3年40万']#第一年的薪资list1[0]#最后一年的薪资目标是list1[2] #或者list1[len(list1)-1] #len(list1)是计算列表对象list1的长度

为了方便进行列表最后面的元素的访问,Python还提供一种特殊语法索引负数索引,从最右边到最左边进行倒数的索引计数。最右边元素(最后一个元素)索引是-1倒数第二个元素索引是-2,…,以此类推,第一个元素索引是-列表长度

#我的薪资目标list1 = ['第1年20万', '第2年25万',  '第3年40万']#最后一个元素list1[-1]#第1个元素list1[-len(list1)] #len(list1)是计算列表对象list1的长度

特别注意:无论是正常索引还是负数索引,访问元素时的索引不能超过列表的索引范围(索引不能越界),否则会抛出IndexError异常。

#我的薪资目标list1 = ['第1年20万', '第2年25万',  '第3年40万']# 索引的范围是[0, 2],因此下面的访问越界print(list1[len(list1)]) #len(list1)=3# 负索引的范围[-3,-1],因此下面的访问越界print(list1[-4])

下图是在PyCharm中运行代码抛出的异常:

d008d6055ce83155b93230ac5d8cac3e.png

03 列表元素的添加

最常用的是在列表对象的尾部添加元素,使用列表对象的append()方法

#我的薪资目标list1 = ['第1年20万', '第2年25万',  '第3年40万']#我在第三年要找个女朋友list1.append("第3年有个漂亮的女票")print(list1) #输出:['第1年20万', '第2年25万', '第3年40万', '第3年有个漂亮的女票']

有小伙伴说,“我长得帅,技术好,当上了技术小领导,是不是可以提前找到女朋友?”

我说,“小伙纸,完全有可能的。Python学的好,女票找的早。”

这时候,我们的目标清单,就要在列表的第1个元素后面添加,可以使用列表对象的insert()方法元素插入到列表的指定位置

#我的薪资目标list1 = ['第1年20万', '第2年25万',  '第3年40万']# Python学的好,还涨的帅,第1年就要有个女朋友list1.insert(1, "第1年有个漂亮的女票")print(list1) #输出:['第1年20万', '第1年有个漂亮的女票', '第2年25万', '第3年40万']

有小伙伴说,“晚上和一哥们在外面吃饭“,然后就问他哥们,“你上班3年后,最想拥有什么?”

他哥们说,“房子,车子,还有6块腹肌。”

我说,“小伙纸,成为Python专家,你都可以实现。”

这时候,我们的目标清单,需要把另一个人的目标清单添加到清单末尾。可以使用列表对象的extend()方法可以将另一个列表对象所有元素添加到该列表对象的尾部

# 我的薪资目标list1 = ['第1年20万', '第2年25万',  '第3年40万']# 我哥们的目标list2 = ['200平的大房子', '奔驰SUV',  '拥有6块腹肌']# 成为Python专家,这一切都会有的list1.extend(list2)print(list1)  # 输出:['第1年20万', '第2年25万', '第3年40万', '200平的大房子', '奔驰SUV', '拥有6块腹肌']
04 列表元素的修改

修改一个列表元素的值,首先要知道被修改元素在列表中的索引,然后指定该索引对应元素新值

# 我的薪资目标list1 = ['第1年20万', '第2年25万',  '第3年40万']print(list1)  # 输出:['第1年20万', '第2年25万', '第3年40万']# 物价上涨,生活成本高,我想实现第三年年薪50万list1[2] = '第3年50万' # 通过索引进行元素值的修改print(list1)  # 输出:['第1年20万', '第2年25万', '第3年50万']
05 列表元素的删除

删除列表中的某个元素,有多种方法,每种方法适用于不同的场景。

1)del语句删除指定索引位置的元素;

# 我的学习任务清单list1 = ['学习Python', '学习数据结构',  '学习设计模式']print(list1)  # 输出:['学习Python', '学习数据结构', '学习设计模式']# 由于今年的课太多,决定去掉'学习数据结构'del list1[1]  # del 语句删除第2个元素print(list1)  # 输出:['学习Python', '学习设计模式']

2)列表对象的pop()方法删除列表的末尾元素;

# 我的学习任务清单list1 = ['学习Python', '学习数据结构',  '学习设计模式']print(list1)  # 输出:['学习Python', '学习数据结构', '学习设计模式']# 由于今年的课太多,决定去掉'学习设计模式'list1.pop()  # pop()方法删除末尾元素print(list1)  # 输出:['学习Python', '学习数据结构']

3)列表对象的pop(索引)方法删除指定索引位置的元素;

# 我的学习任务清单list1 = ['学习Python', '学习数据结构',  '学习设计模式']print(list1)  # 输出:['学习Python', '学习数据结构', '学习设计模式']# 由于今年的课太多,决定去掉'学习数据结构'list1.pop(1)  # 使用pop()方法删除第2个元素print(list1)  # 输出:['学习Python', '学习设计模式']

与del列表对象[索引]语句删除元素的唯一不同点是:使用pop(索引)方法可以返回被删除元素的值。

# 我的学习任务清单list1 = ['学习Python', '学习数据结构',  '学习设计模式']print(list1)  # 输出:['学习Python', '学习数据结构', '学习设计模式']# 由于今年的课太多,决定去掉'学习数据结构'value = list1.pop(1)  # 使用pop(索引)方法删除第2个元素,被删除的元素值被返回print("被删除的元素值:", value)  # 输出:被删除的元素值: 学习数据结构

4)列表对象的remove(元素值)方法删除指定元素;

# 我的学习任务清单list1 = ['学习Python', '学习数据结构',  '学习设计模式']print(list1)  # 输出:['学习Python', '学习数据结构', '学习设计模式']# 由于今年的课太多,决定去掉'学习数据结构'list1.remove('学习数据结构')  # 使用remove(元素值)方法删除第2个元素print(list1)  # 输出:['学习Python', '学习设计模式']
06 列表切片

切片的返回结果类型和切片对象类型一致,返回的是切片对象的子序列,如:对一个列表切片返回结果是一个列表对象,字符串切片返回结果是一个字符串对象。Python中的有序序列都支持切片,如字符串和元组。

切片有以下功能:

1)通过列表切片从列表中根据设定规则选取列表元素,形成新的列表。

2)还可以通过切片来修改和删除列表中部分元素。

3)甚至可以通过切片操作为列表对象增加元素。

1、 定义 list[ 起始索引:结束索引:步长] 起始索引: 表示切片的起始元素索引,也就是切片的第一个元素索引(默认为0)。 结束索引: 表示切片的结束索引,切片结果不包括此索引对应的元素。(默认为列表长度)。 步长: 表示相邻2个元素索引的差值。(默认为1)。

取值过程如下:

第一个元素:list[起始索引]; 第2个元素:list[起始索引+步长]; 其中(起始索引+步长) < 结束索引; … 第n个元素:list[第n-1个元素的索引+步长] ,其中(第n-1个元素的索引+步长) < 结束索引;

2、若步长使用默认值1,可以不用第3个参数,定义时简化为list[起始索引:结束索引];

3、 三个参数都用,list[起始索引:结束索引:步长];

4、特殊用法;

07 列表的成员判断

in关键字判断一个值是否存在于列表中,若存在则返回结“True”,否则返回“False”;

not in关键字与 in 相反,判断一个值是否不存在于列表中。

>>> list3 = ['战士','法师','刺客','坦克','射手']>>> list3['战士', '法师', '刺客', '坦克', '射手']>>> '战士' in list3True>>> '辅助' in list3False>>> '战士' not in list3False>>> '辅助' not in list3True>>> 
08 列表的常用内置函数

1)len(列表)

返回列表的长度,也就是列表中所有元素的个数。

>>> list1 = ['每日计划', '8点早餐', '9点站会']>>> len(list1) #列表长度3>>> 

2)list(iterable=())

将可迭代对象(如列表、元组、字符串、字典等)转换为列表,然后返回此列表。

>>> t1 = ('每日计划', '8点早餐', '9点站会')>>> list1 = list(t1)>>> list1['每日计划', '8点早餐', '9点站会']>>> s1 = 'Python'>>> list2 = list(s1)>>> list2['P', 'y', 't', 'h', 'o', 'n']>>> 

3)max(列表)

返回列表的最大元素。注意:列表的所有元素必须是相同数据类型。

>>> list2 = [6000, 2000, 3000, 4000, 5000, 1000] #上半年使用Python挣的零花钱>>> print('最多的一个月零花钱: %d元'%max(list2))最多的一个月零花钱: 6000元>>> 

4)min(列表)

返回列表的最小元素。注意:列表的所有元素必须是相同数据类型。

>>> list2 = [6000, 2000, 3000, 4000, 5000, 1000] #上半年使用Python挣的零花钱>>> print('最少的一个月零花钱: %d元'%min(list2))最少的一个月零花钱: 2000元>>> 

5)sum(列表)

返回列表的所有元素进行求和运算的结果。注意:列表中参与求和运算的所有元素必须是数字类型。

>>> list2 = [6000, 2000, 3000, 4000, 5000, 1000] #上半年使用Python挣的零花钱>>> print('上半年总共赚的零花钱: %d元'%sum(list2))上半年总共赚的零花钱: 21000元>>> 

6)enumerate(列表)

枚举可迭代的(iterable)对象(如列表、元组、字符串、字典等),返回枚举对象,其中每个元素为包含索引和值的元组。

遍历列表对象,既要获取元素值又要获取元素值对应的索引时,就可以使用这个内置函数。一般用在 for 循环当中。

>>> list2 = [6000, 2000, 3000, 4000, 5000, 1000] #上半年使用Python挣的零花钱>>> for i, value in enumerate(list2, 1):    print("第%d个月赚的零花钱:%d元" % (i, value))    第1个月赚的零花钱:6000元第2个月赚的零花钱:2000元第3个月赚的零花钱:3000元第4个月赚的零花钱:4000元第5个月赚的零花钱:5000元第6个月赚的零花钱:1000元>>> 
09 列表的其它成员方法

列表除了上面提到过的一些常用成员方法,还有以下成员方法。大家不用全记住,有点印象即可。

2464369fd8698c9ae1243b8226a7bfa8.png 使用时若是忘记了,直接在python自带的ide中使用下面的命令查询即可。

1)dir(list);

2)help(list);

3)help(函数),如:help(list.count);

更多Python精彩文章、新手学习干货,欢迎一起交流学习!

END 400ea4241bf407c6a335f215091be03e.gif 扫码关注我们 2574632cfdd62110fbb40ff23fda838a.png 专业提供 定制学习计划和职业规划服务 公众号:Python编程研习社 400ea4241bf407c6a335f215091be03e.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值