python10.22

数据结构的主要学习知识

线性表

顺序表

数组(array)

链表(list)

队列(queue) ---  先进先出(FIFO),后进后出(LILO)

栈(stack) ---  先进后出(FILO),后进先出(LIFO)

哈希表

绝大多数编程,考虑到开发者都不一定擅长创建自己的数据结构,为开发者提供了内置好的数据结构我们称为容器,减轻开发者的压力和重复造轮子

python中的四个内置容器

List --- 列表   在python JavaScript PHP ruby 这些弱数据类型的编程语言,他们都不存在数组,无论它提供的叫不叫数组,都不是数组,大概率是链表

python提供的list ,底层是一个双向链表结构

如何获取定义list

A = [ ]

全局函数list函数

B  = list([1,2,3,4,5])

如何获取列表的元素(element)

下标或者角标

如何获取列表的长度

Len(a)

获取最后一个元素

d[len(d) - 1]

如何遍历列表

一。使用for循环

For I in list :

Print(i)

二。使用while

I = 0

While I <= len(list) :

Print(list[i])

I += 1

思考:若想在一个列表中增加新的元素,删除已有的元素,怎么办?

新增

Append(元素) --- 将元素追加到尾部

Insert(index,元素) --- 将元素插入到index位置、

a.insert(len(a),元素) --- 尾部

Extend(列表) --- 合并,且前列表内容会变为合并后的

在python中,可以使用 a + b 合并列表,但是列表内容不变

删除

remove(元素) --- 根据元素移除,若无此元素会报错,若有相同元素,则只移除第一个

Pop --- 删除并打印该元素,括号加下标,若无则默认最后一个元素,下标不存在和列表为空则抛出异常

Clean --- 清空列表

查询

index() --- 获取下标,通过获取某一个值的下标,有相同元素则返回第一个元素的下标

Count(值) --- 统计某一个元素出现的次数,不存在返回0

列表编辑

reverse() --- 反转列表中元素的顺序,注意和全局函数reversed的区别

Reversed --- 不会反转列表,但是会创建一个反转列表的迭代器

Sort() --- 排序,同一数据类型才能使用,从左到右按照升序排序,字符串使用ask码排序(字母表顺序),可以在括号中设置(reverse = false or ture) 来设置使用升序还是降序

copy() --- 浅拷贝对象

引用传递,浅拷贝,深拷贝

引用传递 --- (d = c),仅仅是将引用地址复制给其他变量,本质还是指向同一个内存

浅拷贝 --- 拷贝堆内存,会产生新的内存空间,仅仅拷贝第一层对象

深拷贝 --- 使用递归,拷贝所有对象

Set --- 集合

底层采用的hash table 实现的

哈希表的特点 --- 无序的,不能重复,

创建set

S = {1,3,5,7,9,11}

空set --- s = {ss}

将一个列表去重

Set() --- 转换为set去重

List(set(c))  --- 转换回去,但列表顺序不一定一样,哈希表在插入元素时会重新计算导致数据不固定

只能用for循环迭代set中的所有值,while循环需要下标此才行

常见方法

Clear

copy

s.add() --- 随机位置插入值

Remove

Pop --- 随意删除一个元素

Discard --- 删除不存在的元素时,不会报错

Intersection --- 交集

Union --- 并集,也会打乱顺序

Difference --- 差集

Tuple --- 元组 --- 一组固定不变的值

在其他编程语言中叫枚举

创建

Tuple()

T = (1,2,3,4)

创建后就无法变了,元组是不可变数据类型,基础数据类型都是不可变的

元组是有下标的

方法仅有两个

Count --- 统计

Index --- 查询下标

创建单个元素的元组

T = (1,) 必须加一个逗号,不然括号会被认为提高优先级,从而类型不是元组

Dict --- 字典,也属于哈希表

可迭代对象 --- 可以用for循环直接迭代子项的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值