📜  python中的数据结构和算法(1)

📅  最后修改于: 2023-12-03 14:46:40.915000             🧑  作者: Mango

Python 中的数据结构和算法

Python 是一门高级动态类型语言,它具有良好的代码可读性,也被广泛应用于数据科学和人工智能等领域。数据结构和算法是 Python 的重要基础,学习它们可以训练你的计算思维和解决问题的能力。下面就让我们来了解 Python 中的数据结构和算法。

数据结构

数据结构是计算机中存储、组织和管理数据的方式,常见的数据结构包括数组、链表、堆栈、队列、树等。

数组

数组是一种线性数据结构。在 Python 中,常用的数组是列表(list),它可以存储任意类型的元素,如整数、字符串等。以下是一些使用列表的示例代码片段:

# 创建列表
my_list = [3, 2, 1, 4]

# 获取列表长度
len(my_list)

# 访问列表元素
my_list[0]

# 切片操作
my_list[1:3]

# 添加元素
my_list.append(5)

# 删除元素
my_list.remove(2)

# 列表排序
my_list.sort()
链表

链表是一种非线性数据结构,它由一系列结点组成,每个结点包含数据和指向下一个结点的指针。在 Python 中,我们可以使用类来实现链表,以下是一个简单的链表示例代码片段:

# 定义链表结点
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

# 创建链表
head = ListNode(1)
head.next = ListNode(2)
head.next.next = ListNode(3)
head.next.next.next = ListNode(4)

# 遍历链表
cur = head
while cur:
    print(cur.val)
    cur = cur.next
堆栈

堆栈是一种线性数据结构,它的特点是先进后出(Last-In-First-Out,LIFO)。在 Python 中,我们使用列表或者双向队列来实现堆栈,以下是一个使用列表实现的堆栈示例代码片段:

# 创建堆栈
stack = []

# 入栈
stack.append(1)
stack.append(2)
stack.append(3)

# 出栈
stack.pop()
队列

队列是一种线性数据结构,它的特点是先进先出(First-In-First-Out,FIFO)。在 Python 中,我们使用双向队列来实现队列,以下是一个双向队列示例代码片段:

from collections import deque

# 创建队列
queue = deque()

# 入队
queue.append(1)
queue.append(2)
queue.append(3)

# 出队
queue.popleft()

树是一种非线性数据结构,它由一系列结点组成,每个结点最多有一个父结点和多个子结点。在 Python 中,我们可以使用类来实现树,以下是一个二叉树示例代码片段:

# 定义二叉树结点
class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

# 创建二叉树
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)

# 遍历二叉树
def preorder(root):
    if not root:
        return
    print(root.val)
    preorder(root.left)
    preorder(root.right)

preorder(root)
算法

算法是解决问题的具体步骤,包括排序、搜索、动态规划等。Python 中有许多内置的算法函数或者模块可以使用。

以下是一些常见算法的示例代码片段:

排序算法

Python 中的排序函数有两种,分别是 sorted()list.sort()。以下是使用 sorted() 函数排序的示例代码片段:

my_list = [3, 2, 1, 4]
sorted_list = sorted(my_list)

以下是使用 list.sort() 函数排序的示例代码片段:

my_list = [3, 2, 1, 4]
my_list.sort()
搜索算法

Python 中的搜索函数有多种,如查找元素位置的 index()、查找元素是否存在的 in 操作符和 count() 函数等。以下是使用 in 操作符查找元素的示例代码片段:

my_list = [3, 2, 1, 4]
if 2 in my_list:
    print("2 exists")
动态规划算法

动态规划是一种优化递归算法的技术,它将子问题的解缓存下来,避免重复计算。以下是一个斐波那契数列的动态规划示例代码片段:

def fib(n):
    memo = [-1] * (n + 1)
    memo[0] = 0
    memo[1] = 1
    for i in range(2, n+1):
        memo[i] = memo[i-1] + memo[i-2]
    return memo[n]
总结

Python 中的数据结构和算法是编写高效程序的必备基础。本文介绍了 Python 中常用的数据结构和算法,希望对你的学习和工作有所帮助。