Python的数据结构

Python的数据结构

数据结构

列表

定义一个列表
  1. 用中括号包起来的,为列表
  2. a = []:定义一个空列表
  3. a = list() :通过函数定义一个空列表,也可以把其他可迭代对象转化为列表
  4. a = [1,2,'3]
列表的索引
  1. 列表的索引,也就是指列表中值的位置
  2. 从左往右,索引从0开始

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XWV50lo0-1599706338246)(C:\Users\Administrator.USER-20200604DR\AppData\Roaming\Typora\typora-user-images\image-20200903101446572.png)]

  1. 从右往左,索引从-1开始

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0BtvYzZC-1599706338249)(C:\Users\Administrator.USER-20200604DR\AppData\Roaming\Typora\typora-user-images\image-20200904092054268.png)]

  2. 可以通过索引取值

    1. 可以取单个值
    2. 可以取多个值
    a = list('abcd')
    a[0]  # 'a'
    a[4] # IndexError:index out of range
    # 用切片,返回的都是列表
    a[:1] # ['a']
    a[::-1] # ['d','c','b','a']
    a[1:4:2] # ['b','d']
    
    a = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
    a[-1:-4]  # []
    a[1:-4]  # ['b', 'c']
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iCxKfOVk-1599706338251)(C:\Users\Administrator.USER-20200604DR\AppData\Roaming\Typora\typora-user-images\image-20200903101933267.png)]

  3. 可以通过索引更改值

    a = list('abcd')
    a[0] = 3 # 此时,列表a变成了[3,'b','c','d']
    a[:2] = 3 # 此时会报错
    a[:2] = '3' # 此时会用'3'替换a[:2],a会变成['3','c','d']
    a[:2] = '333' # 此时会用'3','3','3'替换a[:2],a会变成['3','3','3','c','d']
    
  4. 索引的其他示例

     list_aa[-1:-3:-1]
     list_aa[:4]
     list_aa[2:]
     list_aa[:]
     list_aa[::-1]
    
列表的方法
    • append(object) :在列表末尾加,把整体作为一个元素,添加到列表
    • extend(iterable) :在列表末尾加,把整体中的每一个元素,添加到列表
    • insert(index,value) :在指定的index处插入value
  1. 查 :通过索引去查

  2. 改:通过索引去改

    • pop(index=-1) :通过index去删,默认是最后一个
    • remove(value) :通过值去删,删除找到的第一个value
  3. 其他

    • copy():复制,也可以通过索引[:]进行复制
    • count(value):通过value在列表中的个数
    • reverse():反转列表
    • sort(key=None,reverse=False) :排序列表,默认为正序,当reverse=True为倒序
    • index(value[,start,stop]) :返回value在列表中的索引

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A6ORViKw-1599706338252)(C:\Users\Administrator.USER-20200604DR\AppData\Roaming\Typora\typora-user-images\image-20200904102328669.png)]

  4. 示例

    adict = {'a':1,'1':2,'c':3}
    alist = list(adict.items())
    alist.sort()
    
补充
  • 运算符
    • + :列表可以通过+ 拼接起来
    • *:列表可以通过*进行复制
  • 全局和局部,在函数里面,可以对全局的列表进行数据的操作
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U1vztBGg-1599706338253)(C:\Users\Administrator.USER-20200604DR\AppData\Roaming\Typora\typora-user-images\image-20200903145346566.png)]

元组

元组的定义
1. 用小括号包起来的,称之为元组,元组不可更改
2. `atuple = tuple()` : 定义一个空元组
3. `atuple = ()` : 定义一个空元组
4. `atuple = (1,)` :定义只有一个元素的元组时,需要加上逗号
5. `atuple = 1,2,3` :通过这种方式也可以定义元组
元组的索引
  • 同列表的索引
  • 注意,元组生成后不可更改,因此无法通过索引改变值
  • 通过切片取值,返回的是个元组对象
元组的方法
  • count(value) :统计value在元组中的次数
  • index(value[,start,stop]) :查找value在元组中的索引

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JljHQEvM-1599706338254)(C:\Users\Administrator.USER-20200604DR\AppData\Roaming\Typora\typora-user-images\image-20200903150617671.png)]

集合

集合的定义
1. 集合是用花括号包起来,且元素是单一的,注意跟字典的区分
2. 集合最主要的作用是去重
3. `aset = set()` :空集合只能用函数进行定义
4. `aset = {1}` : 有一个元素的集合
5. `aset = {1,2,2,3}` : 有三个元素的集合,重复的元素会被剔除掉
集合的索引
  • 集合是无序的,因此没有索引
集合的方法
  • add(value) :在集合里面添加一个元素
  • pop() :随机删除一个元素
  • remove(value) :删除指定的值
  • 集合的数学运算

字典

字典的定义
  1. 字典是用花括号包起来的,且元素是键值对的形式
  2. adict = dict() :定义一个空字典
  3. adict = {} : 定义的是一个空字典,不是集合
  4. adict = {'username':'zhangsan'} :定义包含一个元素的字典
  5. adict = {}.fromkeys('abc',20) :定义一个包含三个元素的字典
字典的索引
  • 字典没有索引的概念
字典的方法
    • aidct[key] = value :直接通过这种方式,往字典adict里面添加新元素
    • adict.update(bdict) :把bdict的元素更新到adict里面
    • adict.setdefault(key,vaule) :如果key不存在,添加到字典里面
    • adict[key] :这种方式查值,如果键不存在,会报错
    • adict.get(key,default=None) :如果键不存在,会返回默认值
    • adict.setdefault(key,defalut=None):如果键不存在,会返回默认值,且将该键和默认值插入字典
  • 改,参见增
    • adict[key] = value
    • pop(key) :根据指定的键,删除元素,会返回对应键的值
    • popitem():采用后进先出的方式删除键值对
  • 其他
    • keys() : 查看所有的键
    • values() :查看所有的值
    • items() :将元素以(key,value)的形式进行输出
字典示例
name = ['zhangsan','lisi','wangwu']
salary = [10,8,12]
salary_dict ={}
for i in range(len(name)):
     salary_dict[name[i]] = salary[i]
      
salary_dcit = dict(zip(name,salary))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值