Python重要数据结构之list, tuple, dict, set

List

  1. 创建方法:

    使用方括号[ ]创建一个list

    L = []
    L = ['a','b','c']
    
  1. 有序性:有序

  2. 可更改性:可更改

  3. 元素唯一性:可重复

  4. 访问方式:

    1. 读取/更改:

      List按照数字索引访问内容,起始索引为0不要越界

      print L[0]
      L[1] = 'string1'
      

      List可以使用负数索引完成倒序访问,起始索引为-1不要越界

      print L[-1]
      
    2. 添加/删除

      使用append方法可以向list末尾添加一个新元素;使用pop方法元素读出list末尾一个元素并将其删除,为pop方法指定索引号可读出并删除指定元素

      L.append("one more element")
      the_last_element = L.pop()
      the_third_element = L.pop(2)  //索引号起始为0
      

      使用insert方法向list的任意位置添加一个新元素, 第参数为索引号,第个是新元素

      L.insert(2,'a new element')
      
    3. 进阶操作

    切片(获取list中的一部分内容生成新的list)

    使用L[起始索引:终止索引]来生成一个从起始索引开始(包括起始索引)到终止索引(不包括终止索引)的list, 可以使用负数进行倒序索引

    第一个索引值缺省表示从第一个元素开始取第二个索引值缺省表示取到最后一个元素

    还可以使用L[起始索引:终止索引:间隔n]每n个数的元素取一个,即每隔n-1个元素取一个

    L = ['a','b','c','e']
    new_L = L[1:3]    //这时new_L包括a,b,c三个元素(索引从0开始)
    new_L = L[-4:-2]//这时new_L包括a,b两个元素
    new_L = L[:2] //这时new_L包括a,b,c三个元素
    new_L = L[:]  //相当于复制了一个L,new_L和L的改动互不影响
    new_L = L     //这样的话,new_L与L表示同一个list的两个名称,任何一个改动另外一个也变化
    new_L = L[::2]    //这时new_L包括a,c两个元素
    

    ps字符串也可以进行类似list的切片操作,将每一个字符视为一个元素,按照list的方式操作即可


Tuple

  1. 创建方法

    使用小括号( )创建一个tuple

    T = ()   //空tuple是无意义的,因为tuple一旦创建就不能修改了
    T = ('a','b','c')
    T = (1,) //只含一个整数的tuple在创建时需要加一个逗号以同普通整数区分(因为小括号可以是运算符)
    
  2. 有序性:有序

  3. 可更改性:不可更改

  4. 元素唯一性:可重复

  5. 访问方式:

    1. 读取

      访问方式同list,可以使用数字正序或者倒序索引,但其内容不可更改,但如果使用list作为tuple的元素,则可以通过更改list变相的改变tuple

      print T[2]    //  使用小括号创建,但仍然使用中括号索引
      T = ('a','b',[])
      

Dict

  1. 创建方法

    使用大括号来创建一个dict

    D = {
      'first':'a',   //  dict以“索引:值”的方式创建,即key:value
      'second':'b',
      'third':'c'
    }
    
  2. 有序性:无序

  3. 可更改性:可更改

  4. 元素唯一性:value可重复, key唯一且不能为可变类型如list

  5. 访问方式

    1. 读取/更改

      使用key来索引访问,类似于list (访问到不存在的key会报错);

      使用in操作符可以判断key是否存在

      使用get方法通过key访问(key不存在时返回None

      不存在的key做索引给dict赋值可以增加新元素存在的key做索引给dict赋值会更新key对应的value

      print D['first']
      
      if 'first' in D:
        print D['first']
       
      print D.get('first')
      
      D['fourth'] = 'new_element'
      D['first'] = 'change_element'
      

set

  1. 使用set()创建一个set,传入一个list作为参数可以用list中的值初始化set

    S = set()
    S = set(['a','b','c'])
    
  2. 有序性:无序

  3. 可更改性:可更改

  4. 元素唯一性:元素唯一,且元素不能为可变类型如list

  5. 访问方式

    1. 读取

      因为set无序所以不能使用数字索引来取出特定元素,使用in运算符可以判断一个元素是否在set

      使用add方法可将一个元素添加到set中

      使用pop方法从set中取出一个元素并从set中删除

      if 'a' in S
        print "a在S中"
        
      S.add('d')
      
      print S.pop
      

      ps:set的元素无序,因此不能确定pop出的元素是哪一个


总结

Listtuple在内存中以数组方式组织,查找效率不如dict和set高,但占用空间少;Dictset在内存中以哈希表方式组织查找效率很高,但占用内存空间较大。

​ 四种数据类型都能够存放各种类型的元素,且不需要储存的元素类型相同。需要注意的是,dict索引(key)set中的元素不能为可变的数据类型,如list。

Listtuple可以使用数字索引来正序或者倒序的访问,但tuple的元素个数和名称等是不可改变的,可以把List作为tuple的元素来变相的是tuple能够改变。

set可以用于去重复,但无法访问其中的特定元素,dict可以通过索引(key)来访问其中的元素,也可通过get方法来访问,使用in运算符,可以判断一个元素在不在set中或者判断在不在dict的key中。

​ 使用 for 变量 in list/tuple/dict/set 可以遍历这些结构中的值,注意,但遍历dict时for中的变量取出的是dict的key,需要通过key读出value

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、python 变量和数据类型 1.整数 Python可以处理任意大小的整数,当然包括负整数,在Python程序...
    绩重KF阅读 1,787评论 0 1
  • 最近在慕课网学习廖雪峰老师的Python进阶课程,做笔记总结一下重点。 基本变量及其类型 变量 在Python中,...
    victorsungo阅读 1,746评论 0 5
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • Python 是一种相当高级的语言,通过 Python 解释器把符合语法的程序代码转换成 CPU 能够执行的机器码...
    Python程序媛阅读 1,951评论 0 3
  • 此刻,秋后根须分娩绿芽簇拥枝桠沐浴秋雨中拼命生长 来年,春初繁叶凋零落满枝头根须伫立春风中一片萧索 来自2020号...
    河岛阅读 178评论 0 1