分享

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

 开源优测 2023-03-24 发布于广东

下方查看历史精选文章

重磅发布 - 自动化框架基础指南pdfv1.1
大数据测试过程、策略及挑战

测试框架原理,构建成功的基石

在自动化测试工作之前,你应该知道的10条建议

在自动化测试中,重要的不是工具

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

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

列表

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

创建一个列表:

myList = [1, 2, 3, 4, 5]

访问列表中的元素:

print(myList[0])    # 输出1print(myList[4])    # 输出5

添加元素到列表中:

myList.append(6)print(myList)       # 输出[1, 2, 3, 4, 5, 6]

从列表中删除元素:

myList.remove(3)print(myList)       # 输出[1, 2, 4, 5, 6]

在列表中查找元素:

if 2 in myList:    print("Found")

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

创建一个栈:

stack = []

将元素入栈:

stack.append(1)stack.append(2)stack.append(3)print(stack)        # 输出[1, 2, 3]

出栈并删除元素:

stack.pop()print(stack)        # 输出[1, 2]

队列

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

创建一个队列:

queue = []

将元素入队:

queue.append(1)queue.append(2)queue.append(3)print(queue)        # 输出[1, 2, 3]

出队并删除元素:

queue.pop(0)print(queue)        # 输出[2, 3]

散列表

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

创建一个字典:

dict = { "apple": 1, "banana": 2, "orange": 3 }

访问字典中的元素:

print(dict["apple"])    # 输出1print(dict["orange"])   # 输出3

向字典中添加元素:

dict["pear"] = 4print(dict)             # 输出{ "apple": 1, "banana": 2, "orange": 3, "pear": 4 }

从字典中删除元素:

del dict["banana"]print(dict)             # 输出{ "apple": 1, "orange": 3, "pear": 4 }

二叉树

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

定义一个节点:

class Node:    def __init__(self, value):        self.left = None        self.right = None        self.value = value

创建一个二叉树:

root = Node(1)root.left = Node(2)root.right = Node(3)

遍历二叉树:

def inorder(node):    if node:        inorder(node.left)        print(node.value)        inorder(node.right)

inorder(root)

排序算法

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

冒泡排序:

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

插入排序:

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

选择排序:



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

归并排序:

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

快速排序:

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中常用的查找算法有线性查找和二分查找。

线性查找:

def linearSearch(arr, x):    for i in range(len(arr)):        if arr[i] == x:            return i     return -1

二分查找:

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多