python的数据结构列表方法及扩展(栈和队列)

python的数据结构

python的list方法

list.append()

添加一个元素到列表末尾。list,append(num)相当于a[len(a):] = [num]

python 复制代码
a = [1,2,3,4,5]
a.append(6)
print(a)
a[len(a):] = [7]
print(a)
list.extend()

添加指定列表的所有元素。list.extend(nums)相当于a = a + nums

python 复制代码
a = [1,2,3]
nums = [6,7,8,9]
a.extend(nums)
print(a)
a = a + nums
print(a)

!

list.insert()

双参数:

在指定位置添加一个元素。

添加到最前面:a.insert(0,x)

添加到最后面:a.insert(len(a),x)(ps:相当于append)

指定位置添加:a.insert(index,x)

python 复制代码
# 双参数
a = [1,2,3,4,5]
x = 6
a.insert(0,x)
print(a)
a.insert(len(a),x)
print(a)
index = 3
a.insert(index,x)
print(a)
```![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3df6274d1eab42b2a3334c8476c104ca.png#pic_center)


![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/49a0ba00f749411b8993e98fda8a88ad.png#pic_center)


##### list.remove()

> 从列表中删除一个数字,如果找不到这个数字返回错误(error)。

```python
a = [1,2,3,4]
a.remove(3)
print(a)
a.remove(3) #没有该元素时会报错 
list.pop()

从列表中指定位置移除一个元素,元素可以可以为空,如果元素为空,默认移除最后一个。

指定移除:list.pop(x)

元素为空时表示移除最后一个元素:list.pop()

python 复制代码
a = [1,2,3,4,5]
a.pop(0) # 移除第一个元素
print(a)
a.pop() # 移除最后一个元素
print(a)
list.clear()

清除列表中所有元素,等于del a[:]

使用示例:

python 复制代码
a = [1,2,3,4]
a.clear()
print(a) # 打印空列表
list.count()

参数x返回该列表中出现了几次x

使用示例

python 复制代码
a = [1,2,3,4,2,3]
print(a.count(2))
print(a.count(5))
list.排序

list.sort()将列表排列为升序列表。

list.reverse()将列表排列为降序列表。

使用示例:

python 复制代码
a = [11,6,4,92,43,77]
a.sort()
print(a)
a.reverse()
print(a)

练习题目1:

要求:利用列表来写一个栈(先进后出)。

功能:1.压入栈顶。2.弹出栈顶。3.查看栈顶元素。4.检查空。5.获取栈大小。

python 复制代码
class My_Stack:
    def __init__(self):
        # 初始化栈
        self.a = []

    def add(self, num):
        # 添加元素到栈底
        self.a.append(num)

    def pop(self):
        # 弹出元素
        if not self.exist():
        	return self.a.pop()
        else:
            return None

    def check(self):
        # 获取最后一个元素
        if not self.exist():
            lens = len(self.a)
            return self.a[lens - 1]
        else:
            return None

    def exist(self):
        #检查是否为空
        return len(self.a) == 0

    def size(self):
        #获取栈大小
        return len(self.a)

练习题目2:

要求:利用列表来写一个队列(先进先出)。

功能:1.压入队列。2.弹出队列。3.查看队首元素。4.检查空。5.获取队列大小。

python 复制代码
class myQueue:
    def __init__(self):
        self.a = []

    def add(self, num):
        # 添加元素
        self.a.append(num)

    def pop(self):
        #弹出队列
        if not self.exist():
            num = self.a[0]
            self.a.remove(num)
            return num
        else:
            return None

    def check(self):
        #查看队首元素
        if self.exist():
            return self.a[0]
        else:
            return None

    def exist(self):
        #检查空
        return len(self.a) == 0

    def size(self):
        #获取队列大小
        return len(self.a)

collections.deque()队列

python 复制代码
# 导入
from collections import deque
# 1.创建队列
queue = deque()
# 2.添加元素
queue.append('a')
# 3.队首移除元素
queue.popleft()
# 4.查看队首元素
queue.[0]
# 5.检查队列是否为空
isEmpty = len(queue) == 0
# 6.获取队列大小
len(queue)

列表推导式

从序列中创建新的列表的简单途径,将操作应用于每一个元素,获得新的列表。

示例1:

python 复制代码
ver = [2,4,6]
# 1.第一种变法
ver = [3*x for x in ver]
print(ver)
# 2.第二种变法
ver = [2,4,6]
ver = [[x,x**2] for x in ver]
print(ver)

if 作为过滤器

python 复制代码
# 语法格式
ver = [1,2,3,4]
ver = [3 * x for x in  ver if x>3]
print(ver)

示例:

python 复制代码
# 使用两个元素
vec = [2,4,6]
vec2 = [4,3,-9]
vec3 = [x,y for x in vec for y in vec2 if x > 2]
print(vec3)

复杂嵌套

python 复制代码
# round() 取小数点后i位
vec = [str(round(355 / 113, i)) for i in range(1, 6)]
print(vec)

del语句

可以根据索引从列表中删除一个或多个元素。

使用示例:

python 复制代码
a = [1,2,3,4,5]
# 使用索引删除
del(a[0])
print(a)
# 删除索引范围内所有的元素
del(a[1:2])
print(a)
# 删除列表中所有元素
del(a[:])

不仅如此,元组、序列、字典、集合都属于python的数据结构

数据的遍历

item:遍历为下一个数值仅仅用于字典【dict】

enumerate():得到遍历列表的下标以及数值

zip():遍历多个列表

reversed():不改变原有序列进行倒叙遍历

sort():不改变原有序列进行顺序遍历

具体使用示例:

python 复制代码
a = [9, 36, 4, 33, 45, 67, 29, 64, 32, 19, 75]

# enumerate
for v, k in enumerate(a):
    print('i:' + str(v) + ' num:' + str(k), end=', ')
# zip
print()
b = [2, 3, 54, 62, 17, 89]
for v, k in zip(a, b):
    print(v, k, end=', ')
# reversed sort
print()
for i in reversed(range(len(a))):
    print(i, end=',')
# sort
print()
for i in sorted(range(len(a))):
    print(i, end=',')
相关推荐
ROBOT玲玉3 分钟前
Milvus 中,FieldSchema 的 dim 参数和索引参数中的 “nlist“ 的区别
python·机器学习·numpy
冠位观测者6 分钟前
【Leetcode 每日一题】2545. 根据第 K 场考试的分数排序
数据结构·算法·leetcode
VBA633710 分钟前
VBA技术资料MF243:利用第三方软件复制PDF数据到EXCEL
开发语言
轩辰~12 分钟前
网络协议入门
linux·服务器·开发语言·网络·arm开发·c++·网络协议
小_太_阳21 分钟前
Scala_【1】概述
开发语言·后端·scala·intellij-idea
向宇it21 分钟前
【从零开始入门unity游戏开发之——unity篇02】unity6基础入门——软件下载安装、Unity Hub配置、安装unity编辑器、许可证管理
开发语言·unity·c#·编辑器·游戏引擎
Kai HVZ1 小时前
python爬虫----爬取视频实战
爬虫·python·音视频
古希腊掌管学习的神1 小时前
[LeetCode-Python版]相向双指针——611. 有效三角形的个数
开发语言·python·leetcode
赵钰老师1 小时前
【R语言遥感技术】“R+遥感”的水环境综合评价方法
开发语言·数据分析·r语言
m0_748244831 小时前
StarRocks 排查单副本表
大数据·数据库·python