Python从入门到精通——最全列表操作详解


1、列表概述

**列表:**由一系列元素组成,Python中使用 “[]” 表示列表,逗号分隔元素,如下所示:

Languages = ['Python', 'Java', 'C']  # Languages表示一个列表

2、访问列表元素

可以使用列表名+索引对列表元素进行访问,注意索引也是从0开始计算

Languages = ['Python', 'Java', 'C']  # Languages表示一个列表
print(Languages[0])
输出为:Python

3、修改、添加、删除列表中元素

3.1 修改列表元素

修改列表元素和访问列表元素类似:

  1. 使用列表名+索引访问列表元素
  2. 再将索引处列表元素赋予新的值即可
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

元组其它操作和里列表操作相同,此处不再赘述

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值