Python3数据结构和算法基础指南

2023-06-09 15:39:31 浏览数 (1)

Python是一种流行的开发语言,因为它易于学习和使用,这使得Python成为了数据科学、机器学习、人工智能、网络开发等领域中最常用的语言之一。在这些领域中,掌握数据结构和算法非常重要,因为它们是编程中最基本的概念,也是编写高效代码所必需的。

在本文中,我们将探讨一些Python中最常用的数据结构和算法的实例,包括列表、栈、队列、散列表、二叉树、排序算法和查找算法。

列表

列表是Python中最基本的数据结构之一,它是一个有序的可变容器,可以包含任何数据类型,如数字、字符串和其他对象。在Python中,列表由方括号和逗号分隔的值组成。

创建一个列表:

代码语言:javascript复制
myList = [1, 2, 3, 4, 5]

访问列表中的元素:

代码语言:javascript复制
print(myList[0])    # 输出1
print(myList[4])    # 输出5

添加元素到列表中:

代码语言:javascript复制
myList.append(6)
print(myList)       # 输出[1, 2, 3, 4, 5, 6]

从列表中删除元素:

代码语言:javascript复制
myList.remove(3)
print(myList)       # 输出[1, 2, 4, 5, 6]

在列表中查找元素:

代码语言:javascript复制
if 2 in myList:
    print("Found")

栈是一种数据结构,它遵循先进后出的原则。栈有两个基本操作,分别是push(入栈)和pop(出栈)。在Python中,栈可以使用列表来实现。

创建一个栈:

代码语言:javascript复制
stack = []

将元素入栈:

代码语言:javascript复制
stack.append(1)
stack.append(2)
stack.append(3)
print(stack)        # 输出[1, 2, 3]

出栈并删除元素:

代码语言:javascript复制
stack.pop()
print(stack)        # 输出[1, 2]

队列

队列也是一种数据结构,它遵循先进先出的原则。队列具有两个基本操作,分别是enqueue(入队)和dequeue(出队)。在Python中,队列可以使用列表来实现,但效率不高。

创建一个队列:

代码语言:javascript复制
queue = []

将元素入队:

代码语言:javascript复制
queue.append(1)
queue.append(2)
queue.append(3)
print(queue)        # 输出[1, 2, 3]

出队并删除元素:

代码语言:javascript复制
queue.pop(0)
print(queue)        # 输出[2, 3]

散列表

散列表也称为哈希表,是一种用于存储键值对的数据结构。它通过将键哈希化为一个数字来实现非常快速的查找和插入操作。在Python中,散列表可以使用字典来实现。

创建一个字典:

代码语言:javascript复制
dict = { "apple": 1, "banana": 2, "orange": 3 }

访问字典中的元素:

代码语言:javascript复制
print(dict["apple"])    # 输出1
print(dict["orange"])   # 输出3

向字典中添加元素:

代码语言:javascript复制
dict["pear"] = 4
print(dict)             
# 输出{ "apple": 1, "banana": 2, "orange": 3, "pear": 4 }

从字典中删除元素:

代码语言:javascript复制
del dict["banana"]
print(dict)             # 输出{ "apple": 1, "orange": 3, "pear": 4 }

二叉树

二叉树是一种树形数据结构,它是节点的集合,并且每个节点最多有两个子树。二叉树可以用于实现搜索和排序等算法,从而提高效率和性能。在Python中,二叉树可以使用类和对象来实现。

定义一个节点:

代码语言:javascript复制
class Node:
    def __init__(self, value):
        self.left = None
        self.right = None
        self.value = value

创建一个二叉树:

代码语言:javascript复制
root = Node(1)
root.left = Node(2)
root.right = Node(3)

遍历二叉树:

代码语言:javascript复制
def inorder(node):
    if node:
        inorder(node.left)
        print(node.value)
        inorder(node.right)


inorder(root)

排序算法

排序算法是一种将数据按特定方式排列的算法。Python中有一些常用的排序算法,如冒泡排序、插入排序、选择排序、归并排序和快速排序等。

冒泡排序:

代码语言:javascript复制
def bubbleSort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n-i-1):
            if arr[j] > arr[j 1] :
                arr[j], arr[j 1] = arr[j 1], arr[j]


    return arr

插入排序:

代码语言:javascript复制
def insertionSort(arr):
    for i in range(1, len(arr)):
        key = arr[i]
        j = i - 1
        while j >=0 and key < arr[j] :
            arr[j 1] = arr[j]
            j -= 1
        arr[j 1] = key


    return arr

选择排序:

代码语言:javascript复制


def selectionSort(arr):
    for i in range(len(arr)):
        min_idx = i
        for j in range(i 1, len(arr)):
            if arr[min_idx] > arr[j]:
                min_idx = j
        arr[i], arr[min_idx] = arr[min_idx], arr[i]


    return arr

归并排序:

代码语言:javascript复制
def mergeSort(arr):
    if len(arr) > 1:
        mid = len(arr)//2
        L = arr[:mid]
        R = arr[mid:]
        mergeSort(L)
        mergeSort(R)
 
        i = j = k = 0
 
        while i < len(L) and j < len(R):
            if L[i] < R[j]:
                arr[k] = L[i]
                i  = 1
            else:
                arr[k] = R[j]
                j  = 1
            k  = 1
 
        while i < len(L):
            arr[k] = L[i]
            i  = 1
            k  = 1
 
        while j < len(R):
            arr[k] = R[j]
            j  = 1
            k  = 1


    return arr

快速排序:

代码语言:javascript复制
def quickSort(arr):
    less = []
    equal = []
    greater = []
 
    if len(arr) > 1:
        pivot = arr[0]
        for x in arr:
            if x < pivot:
                less.append(x)
            elif x == pivot:
                equal.append(x)
            else:
                greater.append(x)
        return quickSort(less) equal quickSort(greater)
    
    else:
        return arr

查找算法

查找算法是一种在数据集中查找特定元素的算法。Python中常用的查找算法有线性查找和二分查找。

线性查找:

代码语言:javascript复制
def linearSearch(arr, x):
    for i in range(len(arr)):
        if arr[i] == x:
            return i
 
    return -1

二分查找:

代码语言:javascript复制
def binarySearch(arr, l, r, x):
    if r >= l:
        mid = l   (r - l) // 2
 
        if arr[mid] == x:
            return mid
         
        elif arr[mid] > x:
            return binarySearch(arr, l, mid-1, x)
 
        else:
            return binarySearch(arr, mid 1, r, x)
 
    else:
        return -1

结论

在本文中,我们介绍了Python中最常用的数据结构和算法的实例。这些数据结构和算法是编写高效代码的基础,它们在数据科学、机器学习、人工智能、网络开发等领域中广泛使用。

通过学习这些数据结构和算法的实例,您可以更好地理解Python的编程思想,并编写更高效、更优雅的代码。所以,不要忽视基础,不断学习,提高自己的编程技能!

0 人点赞