从python来看数据结构基础

本文从Python的角度深入探讨数据结构的基础,包括数组、链表、栈、队列和哈希表。讲解了它们的概念、基本操作及其在实际应用中的优缺点,如数组适用于读操作多的场景,链表适合频繁插入删除,栈用于递归和面包屑导航,队列应用于多线程和网络爬虫,哈希表提供键值映射并处理哈希冲突。
摘要由CSDN通过智能技术生成

从python来看数据结构基础

数组

概念

数组是有限个相同类型的变量所组成的有序集合。在内存中顺序存储,可以实现逻辑上的顺序表。

python中主要使用列表(list)和元组(tuple)两种集合,本质上都是对数组的封装。

基本操作

#初始化列表
my_list = [3,1,2,5,4,9,7,2]
#读取元素
print(my_list[2])
2
#更新元素
my_list[3] = 10
print(my_list[3])
10
#插入元素
#尾部插入
#尾部插入元素
my_list.append(6)
#中间插入元素
my_list.insert(5,11)
print(my_list)
[3, 1, 2, 10, 4, 11, 9, 7, 2, 6]

以数组的方式理解插入操作:

class MyArray:
    def __init__(self,capacity):
        self.array = [None] * capacity
        self.size = 0
    def insert(self,index,element):
        #判断访问下标是否超出范围
        if index < 0 or index > self.size:
            raise Exception("超出数组实际元素范围!")
        #从右向左循环,逐个元素向右挪一位
        for i in range(self.size - 1,-1,-1):
            self.array[i + 1] = self.array[i]
        #腾出的位置放入新元素
        self.array[index] = element
        self.size += 1
    def output(self):
        for i in range(self.size):
            print(self.array[i])

输出结果如下:

array = MyArray(4)
array.insert(0,10)
array.insert(0,11)
array.insert(0,15)
array.output()
15
11
10

但是这种方式一旦元素数量超过了数组的最大长度,数组就会被认为是非法输入,因此我们需要使用超范围插入。

class MyArray:
    def __init__(self,capacity):
        self.array = [None] * capacity
        self.size = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值