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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

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