【人生苦短,我学 Python】基础篇——列表(Day8)

余生颓废 提交于 2021-01-20 21:14:03

大家好!我是【AI 菌】,有幸入选这次【博客之星】总评选,请为我投出关键的一票,可选择最大票数,非常感谢!1月25日前,每天都有可投票哦~

投票通道:https://bss.csdn.net/m/topic/blog_star2020/detail?username=wjinjie

在这里插入图片描述

-> 前往【人生苦短,我学 Python】总目录 <-


一、列表简介

(1) 什么是列表

列表由一系列按特定顺序排列的元素组成。这些元素可以是:数字、字母、字符串等其它类型的数据。在 Python 中,用方括号 [ ] 来表示列表,并用逗号来分隔其中的元素。下面是一个简单的列表示例:

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday", 
			 "Friday", "Saturday", "Sunday"]
print(week_list)

如果你使用print()函数, Python 将打印列表的内部表示,包括方括号:

['Monday', 'Tuseday', 'Wednseday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

如果你想直接输出列表里的每个元素,那么就得学习如何访问列表的元素。

(2) 访问列表元素

列表是有序集合,因此要访问列表的任何元素,只需知道该元素在列表中的位置即可。要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内。例如,我们要获取上面列表中的Friday:

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday",
			 "Friday", "Saturday", "Sunday"]
print(Week_list[4])

以上演示了访问列表元素的语法。当你请求获取列表元素时, Python 只返回该元素值,而不包括方括号和引号:

Friday

当然,如果你想依次输出列表中的每一个元素,可以通过for实现:

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday",
			 "Friday", "Saturday", "Sunday"]
for day in Week_list:
    print(day)

通过for循环遍历列表,依次输出每一个元素:

Monday
Tuseday
Wednseday
Thursday
Friday
Saturday
Sunday

(3) 嵌套列表

嵌套列表即在列表里创建其它列表,例如:

list1 = [1, 2, 3]
list2 = ["曹操", "孙权", "刘备"]
list = [list1, list2]
print(list)

嵌套列表相当于列表里的元素是列表:

[[1, 2, 3], ['曹操', '孙权', '刘备']]

当想要取列表里的一个元素时,比如“曹操”,就需要学习索引的用法。

二、 索引、切分与列表复制

(1) 索引

索引值与元素的位置有关。在 Python 中,第一个列表元素的索引为 0 ,而不是 1 。根据这种简单的计数方式,要访问列表的任何元素,都可将其位置减 1 ,并将结果作为索引。例如,要访问第10个列表元素,可使用索引 9。

对于普通的列表,当我们想访问其第5个元素时:

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday",
			 "Friday", "Saturday", "Sunday"]
print(Week_list[4])

程序输入:

Friday

对于嵌套列表,当我们想访问其中的元素,比如上面列表中的“曹操”,则通过如下方式:

list = [[1, 2, 3], ['曹操', '孙权', '刘备']]
print(list[1][0])

程序输入:

曹操

其中,list[1][0]中的索引值1表示取第二个列表,索引值0表示取第二个列表中的第一个元素。

(2) 切片

通过索引可以访问单个列表元素,通过切片则可以处理列表的全部或部分元素。要创建切片,可指定要使用的第一个元素和最后一个元素的索引。主要注意的是:Python 在到达你指定的第二个索引前面的元素后停止。

1.例如:要输出列表中的前三个元素,需要指定索引 0~3 ,这将输出分别为 0 、 1 和 2 的元素。

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday", "Friday", "Saturday", "Sunday"]
print(Week_list[0:3])

通过切片取列表的前三个元素:

['Monday', 'Tuseday', 'Wednseday']

2.你也可以获取列表的任何子集,例如,如果你要提取列表的第 2~6 个元素,可将起始索引指定为 1 ,并将终止索引指定为 6 :

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday", "Friday", "Saturday", "Sunday"]
print(Week_list[1:6])

输出周二至周六:

['Tuseday', 'Wednseday', 'Thursday', 'Friday', 'Saturday']

3.如果没有指定第一个索引, Python 将自动从列表开头开始:

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday", "Friday", "Saturday", "Sunday"]
print(Week_list[:6])

输出周一至周六:

['Monday', 'Tuseday', 'Wednseday', 'Thursday', 'Friday', 'Saturday']

4.如果想取从第 3 个元素到列表末尾的所有元素,也可以通过如下方式:

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday", "Friday", "Saturday", "Sunday"]
print(Week_list[2:])

返回周三至周天:

['Wednseday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

5.如果要遍历列表的部分元素,则可在 for 循环中使用切片。

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday", "Friday", "Saturday", "Sunday"]
for day in Week_list[:3]:
    print(day)

遍历列表1至3个元素,并输出:

Monday
Tuseday
Wednseday

(3) 列表复制

在开发过程中,我们经常需要根据既有列表创建全新的列表。下面来介绍复制列表的工作原理,以及复制列表可提供极大帮助的一种情形。

要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引 [ : ] 。这让 Python 创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表。

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday", "Friday", "Saturday", "Sunday"]
Week_list_copy1 = Week_list
Week_list_copy2 = Week_list[:]
print("Week_list:", id(Week_list))
print("Week_list_copy1:", id(Week_list_copy1))
print("Week_list_copy2:", id(Week_list_copy2))

我们通过采用和不采用 [ : ]的两种方式进行复制,得到列表的id如下:

Week_list: 298963473096
Week_list_copy1: 298963473096
Week_list_copy2: 298963418440

从结果可以看出:Week_list_copy1与原列表Week_list的id相同,说明Week_list_copy1和原列表指向的是同一个列表;Week_list_copy2与原列表Week_list的id不同,说明通过 [ : ] 的方式复制,创建的才是一个新的列表。

三、列表元素个数、最大值、最小值、转换

在Python中,包含一些内置函数,可以轻松处理像列表这一类型的数据。

(1) 返回元素个数

对于普通列表,返回列表元素的个数:

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday",
			 "Friday", "Saturday", "Sunday"]
print(len(Week_list))

程序输出:

7

对于嵌套列表,返回列表中列表的个数:

list = [[1, 2, 3], ['曹操', '孙权', '刘备']]
print(len(list))

程序输出:

2

(2) 返回元素最大值

max() 方法返回列表元素中的最大值:

list1, list2 = ['Google', 'Baidu', 'Taobao'], [1, 2, 3]
print("list1 最大元素值 : ", max(list1))
print("list2 最大元素值 : ", max(list2))

输出列表中元素的最大值:

list1 最大元素值 :  Taobao
list2 最大元素值 :  3

(3) 返回元素最小值

min() 方法返回列表元素中的最小值:

list1, list2 = ['Google', 'Baidu', 'Taobao'], [1, 2, 3]
print("list1 最小元素值 : ", min(list1))
print("list2 最小元素值 : ", min(list2))

输出列表中元素的最小值:

list1 最小元素值 :  Baidu
list2 最小元素值 :  1

(4) 将元组转换成列表

list() 方法用于将元组或字符串转换为列表:

str = "Hello Python"
list2 = list(str)
print("列表元素 : ", list2)

Tuple = (123, 'Google', 'baidu', 'Taobao')
list1 = list(Tuple)
print("列表元素 : ", list1)

程序结果:

列表元素 :  ['H', 'e', 'l', 'l', 'o', ' ', 'P', 'y', 't', 'h', 'o', 'n']
列表元素 :  [123, 'Google', 'baidu', 'Taobao']

注:元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在括号中,列表是放于方括号中。

四、修改、添加和删除操作

(1) 修改列表元素

修改列表元素的语法与访问列表元素的语法类似。要修改列表元素,可指定列表名和要修改的元素的索引,再指定该元素的新值。比如下面,我们将列表中的第一个值:

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday",
			 "Friday", "Saturday", "Sunday"]
Week_list[0] = "星期一"
print(Week_list)

将列表中的Monday改为“星期一”:

['星期一', 'Tuseday', 'Wednseday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

当然,你可以修改任何列表元素的值,而不仅仅是第一个元素的值。

(2) 在列表末尾添加元素

在列表中添加新元素时,最简单的方式是使用append()将元素添加到列表末尾:

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday",
			 "Friday", "Saturday", "Sunday"]
Week_list.append(100)
print(Week_list)

将100添加到列表末尾:

['Monday', 'Tuseday', 'Wednseday', 'Thursday', 'Friday', 'Saturday', 'Sunday', 100]

使用append() 能很轻松地创建列表,例如,你可以先创建一个空列表,再使用一系列的 append() 语句添加元素。下面来创建一个空列表,再在其中添加元素:

Week_list = []
Week_list.append(1)
Week_list.append(2)
Week_list.append(3)
print(Week_list)

程序输出:

[1, 2, 3]

(3) 在列表中插入元素

使用方法 insert() 可在列表的任何位置添加新元素。为此,你需要指定新元素的索引和值:

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday",
			 "Friday", "Saturday", "Sunday"]
Week_list.insert(0, 100)
print(Week_list)

在列表开头添加100:

[100, 'Monday', 'Tuseday', 'Wednseday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

(4) 删除列表元素

在数据处理过程中,我们经常需要从列表中删除一个或多个元素。Python提供了4中删除列表中元素的方法:

1.使用 del 语句删除元素。如果知道要删除的元素在列表中的位置,可使用 del 语句。

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday", "Friday", "Saturday", "Sunday"]
del Week_list[0]
print(Week_list)

删除列表中第一个元素:

['Tuseday', 'Wednseday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

2.使用方法 pop() 删除元素。方法 pop() 可删除列表末尾的元素,并让你能够接着使用它。

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday", "Friday", "Saturday", "Sunday"]
Week_list.pop()
print(Week_list)

删除列表中最后一个元素:

['Monday', 'Tuseday', 'Wednseday', 'Thursday', 'Friday', 'Saturday']

3.删除列表中任何位置处的元素。 实际上,使用 pop() 也可以删除列表中任何位置的元素,只需在括号中指定要删除的元素的索引即可。

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday", "Friday", "Saturday", "Sunday"]
Week_list.pop(1)
print(Week_list)

删除列表中第二个元素:

['Monday', 'Wednseday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

注:如果你不确定该使用 del 语句还是 pop() 方法,下面是一个简单的判断标准:如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用 del 语句;如果你要在删除元素后还能继续使用它,就使用方法 pop() 。

4.根据值删除元素。有时候,你不知道要从列表中删除的值所处的位置。如果你只知道要删除的元素的值,可使用方法 remove() 。

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday", "Friday", "Saturday", "Sunday"]
Week_list.remove("Monday")
print(Week_list)

删除列表中的元素"Monday":

['Tuseday', 'Wednseday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

注:remove() 删除的是列表中某个值的第一个匹配项

五、列表操作符

(1) 拼接操作符

在Python,+ 也可作为拼接操作符,将不同列表拼接成一个列表:

list1 = [1, 2, 3]
list2 = [4, 5, 6]
print(list1 + list2)

拼接成一个列表后:

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

(2) 复制操作符

使用 * 操作符,可以轻松实现列表元素的复制:

list = [1, 2, 3]
print(list * 2)

将列表中所有元素复制到2倍:

[1, 2, 3, 1, 2, 3]

同样地道理,也可以复制多倍。

六、列表排序

在实际开发过程中,有时候你希望保留列表元素最初的排列顺序,而有时候又需要调整排列顺序。 Python 提供了很多组织列表的方式,可根据具体情况选用。

(1) 永久性排序sort()

sort() 让你能够较为轻松地对列表进行排序,下面对列表中的元素按照字母进行排序:

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday", "Friday", "Saturday", "Sunday"]
Week_list.sort()
print(Week_list)

通过 sort()进行排序,是永久性地改变原列表中元素的顺序:

['Friday', 'Monday', 'Saturday', 'Sunday', 'Thursday', 'Tuseday', 'Wednseday']

当要降序排序时,只需向 sort() 方法传递参数 reverse=True,如下所示:

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday", "Friday", "Saturday", "Sunday"]
Week_list.sort(reverse=True)
print(Week_list)

降序排序结果如下所示:

['Wednseday', 'Tuseday', 'Thursday', 'Sunday', 'Saturday', 'Monday', 'Friday']

(2) 临时性排序sorted()

有时候想对列表进行排序,又需要时保留原列表元素的顺序,就可以使用sorted()函数。

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday", "Friday", "Saturday", "Sunday"]
Week_list_sorted = sorted(Week_list)
print(Week_list_sorted)
print(Week_list)

比较排序后的输结果:

['Friday', 'Monday', 'Saturday', 'Sunday', 'Thursday', 'Tuseday', 'Wednseday']
['Monday', 'Tuseday', 'Wednseday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

可以看出:sorted() 并没有改变原列表中元素的顺序。

七、其他成员函数

(1) 统计某元素出现的次数count()

count() 方法用于统计某个元素在列表中出现的次数。比如:

list = [1, 2, 2, 2, 3]
print("列表中2的个数:", list.count(2))

运行结果:

列表中2的个数: 3

(2) 从列表中找出某个值第一个匹配项的索引位置index()

index() 函数用于从列表中找出某个值第一个匹配项的索引位置。比如找出列表中的2的索引:

list = [1, 2, 2, 2, 3]
print("列表中2第一次出现的索引:", list.index(2))

运行结果:

列表中2第一次出现的索引: 1

另外,也可以指定从列表某个位置开始搜索:

list = [1, 2, 2, 2, 3, 2, 3]
print("从第五个元素开始,列表中2第一次出现的索引:", list.index(2, 4))

从索引值为4的元素开始搜索,结果为:

从第五个元素开始,列表中2第一次出现的索引: 5

(3) 反向列表中元素reverse()

reverse() 函数用于反向列表中元素。当我们要反向输出列表中元素时:

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday", "Friday", "Saturday", "Sunday"]
Week_list.reverse()
print(Week_list)

颠倒列表中元素的位置后,输出结果为:

['Sunday', 'Saturday', 'Friday', 'Thursday', 'Wednseday', 'Tuseday', 'Monday']

(4) 清空列表clear()

clear() 函数用于清空列表,类似于 del a[:]。

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday", "Friday", "Saturday", "Sunday"]
Week_list.clear()
print ("列表清空后 : ", Week_list)

列表清空后:

列表清空后 :  []

(5) 复制列表copy()

copy() 函数用于复制列表,类似于前面讲到的通过索引[:]复制的方式。

Week_list = ["Monday", "Tuseday", "Wednseday", "Thursday", "Friday", "Saturday", "Sunday"]
Week_list_copy1 = Week_list.copy()
print("Week_list:", id(Week_list))
print("Week_list_copy():", id(Week_list_copy1))

运行结果:

Week_list: 250643256008
Week_list_copy(): 250643201352

可以看出:使用copy()函数复制的方式与通过[:]复制的方式类似,都是创建了一个新的列表。


-> 回到【人生苦短,我学 Python】总目录 <-
在这里插入图片描述
由于水平有限,博客中难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!