Python数列表完全指南:从基础到实战

Python数列表完全指南:从基础到实战

在Python编程中,列表(List)是最常用的数据结构之一,而数列表(元素为数字的列表)更是贯穿于数据分析、算法实现、数值计算等多个领域。本文将从数列表的基础定义出发,详细讲解其创建、增删改查操作,再结合实战案例演示数列表的常见应用,所有代码均可直接复制运行,最后附上文档下载说明。

一、什么是数列表?

数列表是Python列表的一种特殊形式,其所有元素均为数字类型(整数int、浮点数float、复数complex等)。它继承了列表的有序性、可变性、可重复性等特性,同时因元素为数字,常被用于各类数值运算。

示例:

python 复制代码
# 整数列表
int_list = [1, 2, 3, 4, 5]
# 浮点数列表
float_list = [1.2, 3.4, 5.6]
# 混合数字类型列表
mix_num_list = [1, 2.3, 4+5j]
# 空数列表
empty_num_list = []

print(type(int_list))  # <class 'list'>
print(type(mix_num_list[2]))  # <class 'complex'>

二、数列表的基础操作(Python实现)

2.1 创建数列表

创建数列表的方式主要有直接赋值、列表推导式、range函数转换、生成器表达式等,不同方式适用于不同场景。

python 复制代码
# 方式1:直接赋值(适用于元素较少的情况)
num_list1 = [10, 20, 30, 40]

# 方式2:列表推导式(适用于批量生成有规律的数列表)
# 生成1-10的平方列表
num_list2 = [x**2 for x in range(1, 11)]
print(num_list2)  # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# 生成10以内的偶数列表
num_list3 = [x for x in range(10) if x % 2 == 0]
print(num_list3)  # [0, 2, 4, 6, 8]

# 方式3:range函数转换(适用于生成连续整数列表)
num_list4 = list(range(5, 15))  # 5到14的连续整数
print(num_list4)  # [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

# 方式4:生成器表达式(适用于大量数据,节省内存)
num_list5 = list(x * 3 for x in range(1, 6))
print(num_list5)  # [3, 6, 9, 12, 15]

# 方式5:通过numpy库生成(适用于科学计算,需先安装numpy)
# pip install numpy
import numpy as np
num_list6 = list(np.linspace(0, 1, 5))  # 0到1之间均匀分布的5个数字
print(num_list6)  # [0.0, 0.25, 0.5, 0.75, 1.0]

2.2 访问数列表元素

通过索引(下标)访问,Python列表索引从0开始,支持正向索引和反向索引(从-1开始),也可通过切片获取子列表。

python 复制代码
num_list = [1, 3, 5, 7, 9, 11]

# 正向索引访问单个元素
print(num_list[0])  # 1(第一个元素)
print(num_list[3])  # 7(第四个元素)

# 反向索引访问单个元素
print(num_list[-1])  # 11(最后一个元素)
print(num_list[-3])  # 7(倒数第三个元素)

# 切片获取子列表:list[start:end:step],左闭右开
print(num_list[1:4])  # [3, 5, 7](索引1到3的元素)
print(num_list[:3])   # [1, 3, 5](从开头到索引2的元素)
print(num_list[4:])   # [9, 11](从索引4到结尾的元素)
print(num_list[::2])  # [1, 5, 9](步长为2,间隔取元素)
print(num_list[::-1]) # [11, 9, 7, 5, 3, 1](反转列表)

2.3 修改数列表元素

列表是可变对象,可通过索引直接修改单个元素,也可通过切片修改多个元素。

python 复制代码
num_list = [10, 20, 30, 40, 50]

# 修改单个元素
num_list[2] = 35
print(num_list)  # [10, 20, 35, 40, 50]

# 修改多个元素(切片赋值)
num_list[1:3] = [25, 36]
print(num_list)  # [10, 25, 36, 40, 50]

# 插入多个元素(通过切片赋值实现)
num_list[3:3] = [45, 48]
print(num_list)  # [10, 25, 36, 45, 48, 40, 50]

2.4 增加数列表元素

常用方法有append(末尾添加单个元素)、extend(末尾添加多个元素)、insert(指定位置插入元素)。

python 复制代码
num_list = [1, 2, 3]

# append:末尾添加单个元素
num_list.append(4)
print(num_list)  # [1, 2, 3, 4]

# extend:末尾添加多个元素(接收可迭代对象)
num_list.extend([5, 6, 7])
print(num_list)  # [1, 2, 3, 4, 5, 6, 7]

# insert:指定索引插入元素(insert(索引, 元素))
num_list.insert(2, 2.5)
print(num_list)  # [1, 2, 2.5, 3, 4, 5, 6, 7]

2.5 删除数列表元素

常用方法有del(按索引/切片删除)、pop(删除并返回指定索引元素,默认末尾)、remove(按元素值删除,删除第一个匹配项)、clear(清空列表)。

python 复制代码
num_list = [1, 2, 3, 4, 5, 3, 6]

# del:按索引删除单个元素
del num_list[3]
print(num_list)  # [1, 2, 3, 5, 3, 6]

# del:按切片删除多个元素
del num_list[1:3]
print(num_list)  # [1, 5, 3, 6]

# pop:删除并返回末尾元素
last_num = num_list.pop()
print(last_num)  # 6
print(num_list)  # [1, 5, 3]

# pop:删除并返回指定索引元素
mid_num = num_list.pop(1)
print(mid_num)  # 5
print(num_list)  # [1, 3]

# remove:按元素值删除(删除第一个3)
num_list.remove(3)
print(num_list)  # [1]

# clear:清空列表
num_list.clear()
print(num_list)  # []

三、数列表的常用数值运算

由于数列表元素为数字,可通过Python内置函数或第三方库实现求和、求平均值、求最值等数值运算。

python 复制代码
num_list = [2, 4, 6, 8, 10]

# 1. 求和:sum()
total = sum(num_list)
print(total)  # 30

# 2. 求最大值:max()
max_num = max(num_list)
print(max_num)  # 10

# 3. 求最小值:min()
min_num = min(num_list)
print(min_num)  # 2

# 4. 求平均值:sum()/len()
avg_num = sum(num_list) / len(num_list)
print(avg_num)  # 6.0

# 5. 求方差、标准差(需用到statistics库)
import statistics
# 方差
variance = statistics.variance(num_list)
print(variance)  # 8.0
# 标准差
std_dev = statistics.stdev(num_list)
print(std_dev)  # 2.8284271247461903

# 6. 排序:sort()(原地排序)或sorted()(返回新列表)
num_list2 = [5, 2, 9, 1, 5, 6]
# 原地升序排序
num_list2.sort()
print(num_list2)  # [1, 2, 5, 5, 6, 9]
# 原地降序排序
num_list2.sort(reverse=True)
print(num_list2)  # [9, 6, 5, 5, 2, 1]

# 返回新的排序列表(原列表不变)
num_list3 = [3, 1, 4, 1, 5]
sorted_list = sorted(num_list3)
print(sorted_list)  # [1, 1, 3, 4, 5]
print(num_list3)    # [3, 1, 4, 1, 5]

四、数列表实战案例

案例1:计算斐波那契数列前10项

斐波那契数列定义:前两项为1,从第三项开始,每一项等于前两项之和。

python 复制代码
# 初始化斐波那契数列前两项
fib_list = [1, 1]
# 生成前10项(已存在2项,需再生成8项)
for i in range(2, 10):
    next_num = fib_list[i-1] + fib_list[i-2]
    fib_list.append(next_num)

print("斐波那契数列前10项:", fib_list)
# 输出:斐波那契数列前10项: [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

案例2:筛选列表中的质数

质数:大于1的自然数,除了1和它本身以外不再有其他因数。

python 复制代码
def is_prime(n):
    """判断一个数是否为质数"""
    if n <= 1:
        return False
    if n == 2:
        return True
    if n % 2 == 0:
        return False
    # 只需判断到根号n
    for i in range(3, int(n**0.5) + 1, 2):
        if n % i == 0:
            return False
    return True

# 原始数列表
num_list = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
# 筛选质数列表
prime_list = [x for x in num_list if is_prime(x)]

print("原始列表:", num_list)
print("筛选后的质数列表:", prime_list)
# 输出:原始列表: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
#      筛选后的质数列表: [2, 3, 5, 7, 11, 13]

案例3:数列表的矩阵转置(二维数列表)

二维数列表可表示矩阵,矩阵转置即行变列、列变行。

python 复制代码
# 定义一个3x3的矩阵(二维数列表)
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# 方法1:通过列表推导式实现转置
transposed_matrix = [[row[i] for row in matrix] for i in range(len(matrix[0]))]

# 方法2:通过zip函数实现转置(返回元组,需转换为列表)
transposed_matrix2 = list(map(list, zip(*matrix)))

print("原始矩阵:")
for row in matrix:
    print(row)
print("转置后的矩阵(方法1):")
for row in transposed_matrix:
    print(row)
print("转置后的矩阵(方法2):")
for row in transposed_matrix2:
    print(row)

# 输出:
# 原始矩阵:
# [1, 2, 3]
# [4, 5, 6]
# [7, 8, 9]
# 转置后的矩阵(方法1):
# [1, 4, 7]
# [2, 5, 8]
# [3, 6, 9]
# 转置后的矩阵(方法2):
# [1, 4, 7]
# [2, 5, 8]
# [3, 6, 9]

五、总结

数列表是Python中处理数值数据的基础工具,掌握其创建、访问、修改、增删等基础操作是核心,结合内置函数和第三方库(如numpy、statistics)可实现复杂的数值运算。本文的案例和代码覆盖了数列表的核心应用场景,希望能帮助大家快速掌握并灵活运用。

相关推荐
闫有尽意无琼16 小时前
Qt局部变量“遮蔽(shadow)”成员变量导致lambda传参报错
开发语言·qt
工程师00716 小时前
C# 动态编程(基于 dynamic 类型)
开发语言·c#·dynamic·动态编程
星浩AI16 小时前
LCEL:打造可观测、可扩展、可部署的 LangChain 应用
人工智能·后端·python
南桥几晴秋16 小时前
Qt显示类控件
开发语言·c++·qt
这儿有一堆花16 小时前
Python 虚拟环境的配置与管理指南
开发语言·python
晨风先生16 小时前
打包Qt程序的脚本package.bat
开发语言·qt
Generalzy17 小时前
深度觉醒 — Deep Agents(三座大山 — Agent 的核心挑战)
python
彼岸花开了吗17 小时前
构建AI智能体:七十八、参数的艺术:如何在有限算力下实现高质量的AI诗歌创作
人工智能·python·llm
小途软件17 小时前
基于深度学习的人脸检测算法研究
java·人工智能·pytorch·python·深度学习·语言模型