python学习(2)基础数据结构

 1. tuple元组:

 元组是长度固定,不可改变的序列。创建元组的方法是逗号;

如果想要创建一个更复杂的元组的话吗,还是要用括号,括号之间需要用逗号;

 tuple()可以把其他序列或者迭代器转换为序列,存放在元组中的object本身无法修改,但是如果tuple内部的object是可以更改的

那么可以对其进行修改。

tuple用+来合并多个元组

取出元组中元素的方法有多种,其中一种如下图所示:


 一种元组方法,可以用来计算某个值出现的次数,list中也有这个方法,

2. List列表

list的内容和大小都可以变;

 list函数通常用来局限化迭代器或者生成器,如下图所示:


list添加和移除元素的常用语法:append insert pop remove、

 append: a_list.append("foo")

insert: 将元素插入到指定的位置


  pop: 移除序列中特定位置的元素,若不指定位置,默认移除最后一个元素


remove: 通过值移除指定的element,如果同一个值在序列号总多次出现,只移除第一个


检查一个值是否在list中,用in:

合并list:

 (1)用+号

(2)通过extend方法,可以添加多个元素

注意:用+做合并是一个运算量较大的操作,因为要创建一个新的list并复制。如果操作的是一个很大的list。用extend会

更好一些

 append和extend的区别:append是把元素添加到一个list里,extend是把两个list结合在一起

 extend和+的区别:+是创建了一个新的list并返回,运算量大;extend是在原来的list上面作了修改,运算量小

排序:

用sort函数。sort函数有一些比较方便的选项。比如设置一个sort key,这个key也是一个函数,比如我们想要按string的长度来排序

 

二分搜索和维持一个排好序的list

 内建的bisect模块可以实现二分搜索。bisect.bisect是用来寻找插入的位置,而bisect.insert则实际插入元素到指定的位置:

 注意,bisect不会检查list是否是排好序的,所以用这个模块之前要把list排序

 

切片:

 [start:stop] 输出的结果包含开头,不包含结尾。所以输出的结果的数量是stop-start,。切片可以用来输出,也可以用来修改list中的某些值

 在切片的使用中,可以不用写开头或者结尾


负索引表示倒数开始多少个的意思

 

 两个冒号后面的数代表步长,就是隔几个元素取一次:

 

 用-1能够反转一个list或者tuple:

 

内建的序列函数:

 enumerate(枚举),能够返回一个(i,value)的tuple,通常用来把一个list中的位置和值映射到一个dict字典中



 sorted:该函数返回一个新的排好序的序列,而之前提到的.sort方法是直接更改原有的序列,不产生新的序列。

zip:用于pairs(成对)。把多个序列中对应的元素变成一对,最后返回一个含有tuple的list,zip可以接受任意长度的序列,最后返回的结果

取决于最短的序列。zip的一个常见用法是同时迭代多个序列,可以和enumerate搭配起来使用:


如果给我们一个压缩过的序列,我们可以将其解压:


reversed:可以倒叙迭代序列


4. dict 字典

字典创建方法是用{},dict可以像list一样插入:


可以检查dict是否有某个key:


可以使用del或者pop删除值(注意:del和pop都是对key操作)


直接使用keys和values方法能返回dict中key-value组合的迭代器,不过并不按照什么顺序。并且直接使用如果print出来之后会得到如下形式,

需要使用list具现化:


可以使用update来合并两个dict,使用这种方法更改了原有的dict,不会产生新的dict:


如果dict中某个key存在的话,就返回该value,否则的话,九返回一个默认值:


dict中的get和pop方法能够设置默认值,即能把上面的代码简写为:


另外一种常见用法:


而setdefault方法是专门为这个用途存在的,上面的循环可以写成:

使用setdefault()初始化字典键值,使用字典的时候经常会遇到这样一种应用场景:动态更新字典,如果key不在dictionary中那么就添加它

并把它对应的值初始化为空列表[],然后把元素append到空列表中


有效的key类型:

通常的key类型是不可更改的敞亮类型(int, float, string)或者tuple。可以查看一个object是否是hashable,只要是hashable,就可以当做

dict中的key。

5. Set集合

set是无序且元素不重复的。就像key唯一,且没有value的字典,两种方式可以创建,一个是用set函数,一个是用花括号:

,但是创建空set只能使用set(),因为{}是创建一个空字典。

set支持并集、交集和差集

并集表示方式:set1.union(set2)或者set1 | set2

交集表示方式:set1.intersection(set2)或者set1 & set2

注意:set的元素必须是不可更改的,如果想要list一样的元素,只能变为tuple

查看集合的关系:子集和父集:


















 

















1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值