列表是Python中一个容易使用且非常强大的功能,可以让我们在一个地方存储成组的信息。
首先,列表类似于C语言中的数组,由一系列按特定顺序排序的元素组成,而且索引是从0而不是1开始。在Python中,用方括号([])来表示列表,并用逗号来分隔不同的元素。
例如:
languages = ['c','java','c#','python']
print(languages)
运行结果如下:
[‘c’, ‘java’, ‘c#’, ‘python’]
注意输出的结果中包含方括号和逗号,如果我们只想输出列表中的内容,则需要访问列表元素:
for language in languages:
print(language.title()) #注意缩进和冒号
运行结果如下:
C
Java
C#
Python
列表的基本操作
一、修改、添加和删除列表元素
在Python中,我们可以用更加简便的语法来对列表元素进行操作:
(1)修改列表元素
修改列表元素的方法和C语言非常相似,只需要指定索引再指定新值就可以了:
languages = ['c','java','c#','python']
languages[1] = 'javascript'
for language in languages:
print(language.title())
运行结果如下:
C
Javascript
C#
Python
(2)在列表中添加元素
a)在列表末尾添加元素
可以使用append方法将新元素附加到列表末尾:
languages = ['c','java','c#','python']
languages.append('php')
for language in languages:
print(language.title())
运行结果如下:
C
Java
C#
Python
Php
使用append方法,我们可以轻易地动态创建列表,而不需要像C++语言一样进行复杂的操作:
sports = []
sports.append('running')
sports.append('jogging')
sports.append('football')
sports.append('basketball')
sports.append('rugby')
for language in languages:
print(language.title())
运行结果如下:
Running
Jogging
Football
Basketball
Rugby
b)在列表中插入元素
使用方法insert可以通过指定新元素的索引和值在列表的任意位置插入新的元素:
languages = ['c','java','c#','python']
languages.insert(0,'ruby')
for language in languages:
print(language.title())
运行结果如下:
Ruby
C
Java
C#
Python
(3)删除列表元素
a)使用del方法删除元素
如果已知需要删除的元素在列表中的位置,可以使用del方法来删除:
languages = ['c','java','c#','python']
del languages[0]
for language in languages:
print(language.title())
运行结果如下:
Java
C#
Python
del方法的前提是知道要删除元素的索引,由此可以删除任意位置的元素,但删除后无法再次使用该元素
b)使用pop方法删除元素
如果使用pop方法删除元素,那么我们就可以继续使用被删除的元素:
languages = ['c','java','c#','python']
other_languages = []
other_languages.append(languages.pop())
other_languages.append(languages.pop())
for other_language in other_languages:
print(other_language)
运行结果如下:
python
c#
而且,如果我们为pop方法指定索引,那么我们可以删除任意位置上的元素:
languages = ['c','java','c#','python']
other_languages = []
other_languages.append(languages.pop(2))
other_languages.append(languages.pop(2))
for other_language in other_languages:
print(other_language)
运行结果如下:
c#
python
观察到,当索引为2的元素被删除后,之前索引为3的元素的索引变为2。
c)根据值删除元素
如果我们只知道需要删除的元素的值,那么我们可以使用remove方法来实现:
languages = ['c','java','c#','python']
languages.remove('c#')
for language in languages:
print(language.title())
运行结果如下:
C
Java
Python
类似pop方法,当我们使用remove方法删除元素时,仍可以继续使用被删除的元素。
需要注意的是,如果我们使用remove方法时,需要删除的元素在列表中出现多次,那么remove只删除第一次出现的值:
languages = ['c','java','c#','python','c']
languages.remove('c')
for language in languages:
print(language.title())
运行结果如下:
Java
C#
Python
C
显然,二个‘c’并没有被删除,如果我们想要删除全部的某种元素,可以使用循环来判断:
languages = ['c','java','c','c#','python','c']
while 'c' in languages: #判断该元素是否已被全部删除
languages.remove('c')
for language in languages:
print(language.title())
运行结果如下:
Java
C#
Python
可以观察到,列表中的全部要删除的元素均被删除。
二、排序
(1)使用sort函数排序
如果我们希望对某个列表进行永久性排序,可以使用sort函数:
sports = ['running','jogging','football','basketball','rugby']
sports.sort()
print(sports)
运行结果如下:
[‘basketball’, ‘football’, ‘jogging’, ‘rugby’, ‘running’]
该函数在为字符串排序时,按照字母顺序排列。
如果想按与字母顺序相反的顺序进行排序,可以向该函传递参数:reverse=True:
sports = ['running','jogging','football','basketball','rugby']
sports.sort(reverse=True)
print(sports)
运行结果如下:
[‘running’, ‘rugby’, ‘jogging’, ‘football’, ‘basketball’]
由此,我们可以与字母顺序相反的顺序对列表元素进行排序。
(2)使用sorted函数排序
如果我们希望在排序的同时,保留列表元素原来的顺序,可以使用sorted函数:
sports = ['running','jogging','football','basketball','rugby']
print('Before the sort, the list is: ')
print(sports)
print('After the sort, the list is: ')
print(sorted(sports))
print('The original list is: ')
print(sports)
运行结果如下:
Before the sort, the list is:
[‘running’, ‘jogging’, ‘football’, ‘basketball’, ‘rugby’]
After the sort, the list is:
[‘basketball’, ‘football’, ‘jogging’, ‘rugby’, ‘running’]
The original list is:
[‘running’, ‘jogging’, ‘football’, ‘basketball’, ‘rugby’]
同样的,如果希望按照与字母顺序相反的顺序排序,也可以传入参数reverse=True
(3)倒序打印列表
对于一个列表,如果我们希望反转其中的数据,可以使用reverse函数:
sports = ['running','jogging','football','basketball','rugby']
print(sports)
sports.reverse()
print(sports)
运行结果为:
[‘running’, ‘jogging’, ‘football’, ‘basketball’, ‘rugby’]
[‘rugby’, ‘basketball’, ‘football’, ‘jogging’, ‘running’]
reverse函数是永久地修改列表,但我们可以通过再次调用该函数的方式来恢复列表
(4)确定列表的长度
使用len函数可以显示列表的长度:
sports = ['running','jogging','football','basketball','rugby']
print(len(sports))
运行结果为:
5
三、创建数字列表
(1)range函数
在Python中,使用函数range可以轻松的生成一系列数字:
for value in range(2,7):
print(value)
运行结果为:
2
3
4
5
6
可以观察到,传入range的两个参数为左闭右开。
(2)使用range函数创建数字列表
创建数字列表时,可以使用list函数直接把range的结果转换为列表:
numbers = list(range(4,9))
print(numbers)
运行结果为:
[4, 5, 6, 7, 8]
四、对数字列表的简单统计计算
函数 | 描述 |
---|---|
min | 返回数字列表的最小值 |
max | 返回数字列表的最大值 |
sum | 返回数字列表的总和 |
五、使用列表的一部分
(1)切片
当我们想使用列表的一部分时,可以采用切片的方法,可以指定要使用的第一个元素的索引和要使用的最后一个元素的索引加1:
sports = ['running','jogging','football','basketball','rugby']
print(sports[0:3])
运行结果为:
[‘running’, ‘jogging’, ‘football’]
如果不指定第一个索引,Python将从列表开头截取,如果不指定第二个索引,Python将自动截取到列表末尾:
sports = ['running','jogging','football','basketball','rugby']
print(sports[:2])
print(sports[1:])
运行结果为:
[‘running’, ‘jogging’]
[‘jogging’, ‘football’, ‘basketball’, ‘rugby’]
(2)复制列表
sports = ['running','jogging','football','basketball','rugby']
favorite_sports = sports[:]
print(favorite_sports)
运行结果为:
[‘running’, ‘jogging’, ‘football’, ‘basketball’, ‘rugby’]
在Python中,可以使用负数索引,-1表示最后一个元素,-2表示倒数第二个元素:
sports = ['running','jogging','football','basketball','rugby']
print(sports[-1])
print(sports[-3])
rugby
football