文章目录
1、列表概述
**列表:**由一系列元素组成,Python中使用 “[]” 表示列表,逗号分隔元素,如下所示:
Languages = ['Python', 'Java', 'C'] # Languages表示一个列表
2、访问列表元素
可以使用列表名+索引对列表元素进行访问,注意索引也是从0开始计算
Languages = ['Python', 'Java', 'C'] # Languages表示一个列表
print(Languages[0])
输出为:Python
3、修改、添加、删除列表中元素
3.1 修改列表元素
修改列表元素和访问列表元素类似:
- 使用列表名+索引访问列表元素
- 再将索引处列表元素赋予新的值即可
Languages = ['Python', 'Java', 'C'] # Languages表示一个列表
Languages[0] = 'C++' #修改列表元素值
print(Languages[0])
输出为:C++
3.2 列表中添加元素
- 列表末尾添加元素:append()方法,只需指定元素值即可
- 列表中插入元素:insert()方法,需要指定插入元素的索引和元素值
Languages = ['Python'] # Languages表示一个列表
Languages.append('C') #末尾添加元素
print(Languages)
Languages.insert(0, 'Java') = 'C++' #在0处插入元素
print(Languages)
输出为:
(1)Python C
(2)Java Python C
3.2 列表中删除元素
- 使用del语句删除元素
用法: 需要知道元素索引
Languages = ['Python', 'Java', 'C'] # Languages表示一个列表
del Languages[0] #删除0位置的元素
print(Languages)
输出为:
Java C
注:del语句删除后的元素不能再被访问
- 使用pop()方法删除元素
pop()方法用来删除列表中的元素,需要对其加元素索引即可(如果无索引,则默认删除最后一个元素)。pop()方法删除列表元素后,你能够接着使用它,将其赋值给另一个变量即可。
Languages = ['Python', 'Java', 'C'] # Languages表示一个列表
Popped_Language =Languages.pop() #无索引,默认删除末尾元素
print(Languages)
print(Popped_Language)
输出为:
(1) Python Java
(2) C
- 根据值删除列表元素
有时候你知道要删除的值,但是并不知道其位置,则可以remove()方法进行删除。该方法智能删除列表中第一个出现此元素的值,如果有多个值出现,则需要利用循环进行删除
Languages = ['Python', 'Java', 'C'] # Languages表示一个列表
Removed_Languages =Languages.remove(‘Java’) #删除元素值‘Java’
print(Languages)
print(Removed_Language)
输出为:
(1) Python C
(2) Java
4、列表排序
Python中提供了两个方法能够方便的对列表进行排序:
- 永久排序:sort()方法
sort(),对列表进行永久排序,sort()中有个参数reverse,如果设置为true,则可以实现对列表进行逆序排序
Languages = ['Python', 'Java', 'C'] # Languages表示一个列表
Languages.sort() #列表排序
print(Languages)
输出为:
C Java Python
- 临时排序:sorted()函数
sorted()函数,对列表进行临时排序,对原始列表并没有改变
Languages = ['Python', 'Java', 'C'] # Languages表示一个列表
print(sorted(Languages)) #按顺序打印列表
print(Languages)
输出为:
(1) C Java Python
(2) Python Java C
- 倒序打印列表元素:reverse()方法
倒着打印列表中的元素列表
Languages = ['C', 'Java', ''Python] # Languages表示一个列表
Languages.reverse() #列表排序
print(Languages)
输出为:
Python Java C
5、列表长度
在实际编程当中,我们经常会遇到求解列表的长度,即列表所含元素的数量,Python中提供了len()函数快速获取列表的长度
Languages = ['C', 'Java', ''Python] # Languages表示一个列表
print(len(Languages))
输出为:
3
6、列表遍历
6.1 for循环遍历列表
遍历列表元素,可使用for循环对列表元素进行缩放,for后边需要有冒号,如下:
Languages = ['C', 'Java', 'Python'] # Languages表示一个列表
for Language in Languages: # 注意此处的冒号
print(Language)
输出为:
C
Java
Python
注:Python是以缩进来判断与前一行代码的关系,所以一定要正确使用代码缩进!
7、创建有规律的数字列表
列表非常适合用于存储存储数字集合,且Python也提供了很多工具,能够帮助我们高效的处理数字列表。
7.1 函数range()
range()函数表示一个数值范围,range()函数的用法如下:
# number1表示起始值,number2表示终止值,但不包含此值,step表示步长
range(number1,number2,step)
如例子:
for value in range(1,5):
print(value)
输出为:
1,2,3,4
7.2 range()创建数字列表
可以使用**函数list()**将range()的结果直接转换为列表,如
numbers = list(range(1,6))
print(numbers)
输出为:
[1,2,3,4,5]
7.3 对数字列表执行简单的统计
函数min()、max()、sum()分别能够求出列表中最小值、最大值、和,如:
numbers =range[1,10]
print(min(numbers))
print(max(numbers))
print(sum(numbers))
输出分别为:
0
9
45
8 列表解析
列表解析是将for循环和创建新元素合并成一行,并自动附加新元素,能够让代码更简洁。
比如,我们想求1~10之间数的平方,我们可以使用一个for循环遍历1-10之间的数,然后再求平方和,如:
# 不使用列表解析
squares = []
for value in range(1,11):
square = value ** 2
squares.append(square)
print(squares)
输出为:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
上述是不适用列表解析,进行求一个数的平方和再赋值给列表,分两步完成,我们使用列表解析,就可以将两步合二为一,即for循环和赋值一起操作赋值给squares列表:
# 使用列表解析
squares = [value **2 for value in range(1,11)]
print(squares)
输出为:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
列表解析的组成:
- 中括号:因为是列表,所以中括号肯定是要有的
- 表达式,用于生成存储在列表中的值
- for循环,用于给表达式提供值
9 列表切片
列表切片能够使得我们从列表中抽取任意列表的子集,使用方法为:
# number1表示第一个元素索引(如果省略,则默认列表第一个元素)
number2表示第二个元素索引(如果省略,默认为列表末尾元素),这里同样也是不包含第二个索引的数
list[number1, number2]
使用切片例子:
- 生成第2~4个列表元素的切片
numbers = [value for value in range(1, 11)]
print(numbers[1:4])
输出为:[2, 3, 4 ]
- 生成前三个列表元素的切片
numbers = [value for value in range(1, 11)]
print(numbers[:3]) # 第一个索引省略,默认为第一个元素
输出为:[1,2, 3 ]
- 生成第3个元素至列表末尾的元素的切片
numbers = [value for value in range(1, 11)]
print(numbers[2:]) # 第一个索引省略,默认为第一个元素
输出为:[3,4,5,6,7,8,9,10 ]
- 生成列表最后三个元素的切片
这里使用的列表负数的索引,负数索引返回离列表末尾相应距离的元素
numbers = [value for value in range(1, 11)]
print(numbers[-3:]) # 第一个索引省略,默认为第一个元素
输出为:[8,9,10 ]
9.1 列表切片使用列表副本
要使用一个列表的副本,要用切片进行列表复制,这样会形成两个独立的列表。
切记不要将列表赋值给一个列表,因为这样并不能得到两个列表。
- 使用赋值语法创建列表副本的问题
下边就将列表赋值,验证是否形成独立的列表:
squares = list(range(1, 11))
print('squares原始值为:', end='')
print(squares)
# 使用列表赋值
numbers_squares = squares
print('numbers_squares所有元素为:', end='')
print(numbers_squares)
# 为squares列表添加数字100
squares.append(100)
print('添加数字后的squares值:', end='')
print(squares)
# 为squares列表添加数字200
numbers_squares.append(200)
print('添加数字后的number_squares值:', end='')
print(numbers_squares)
输出为:
squares原始值为:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers_squares所有元素为:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
添加数字后的squares值:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100]
添加数字后的number_squares值:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100, 200]
可以看到,number_squares列表值中,也有数字100,说明赋值并没有形成两个独立的列表。赋值只是让Python新变量number_squares关联到包含在squares中的列表,所以这两个列表指向同一个列表。
- 列表副本正确方法:使用切片复制列表副本
下边的列子,创建一个1-10的数字列表,用切片进行列表复制形成两个独立的列表
squares = list(range(1, 11))
print('squares原始值为:', end=' ')
print(squares)
# 使用切片复制squares列表
numbers_squares = squares[:]
print('numbers_squares所有元素为:', end=' ')
print(numbers_squares)
输出为:
squares原始值为: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers_squares所有元素为: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
为了验证确实形成了两个独立的列表,在每个列表上加数字,核实每个列表都记录了加的数字
squares = list(range(1, 11))
print('squares原始值为:', end='')
print(squares)
# 使用切片复制squares列表
numbers_squares = squares[:]
print('numbers_squares所有元素为:', end='')
print(numbers_squares)
# 为squares列表添加数字100
squares.append(100)
print('添加数字后的squares值:', end='')
print(squares)
# 为squares列表添加数字200
numbers_squares.append(200)
print('添加数字后的number_squares值:', end='')
print(numbers_squares)
输出为:
squares原始值为:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers_squares所有元素为:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
添加数字后的squares值:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100]
添加数字后的number_squares值:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 200]
可以看到,确实100和200分别加入到相应列表中。
9.2 元组
将数值不可变的列表称为元组
9.2.1 元组定义
使用圆括号来定义元组,定义元组后就可以使用索引对元组元素进行访问,如下:
numbers =(100,200)
print(numbers[0])
print(numbers[1])
输出为:100, 200
9.2.2 修改元组变量
虽然不能修改元组的元素,但是可以给存储元组的变量赋值
numbers =(100,200)
print(numbers[0])
print(numbers[1])
numbers=(200,400)
print(numbers[0])
print(numbers[1])
输出为:100, 200
200 ,400
元组其它操作和里列表操作相同,此处不再赘述