1.4 列表与字典

列表与字典,这两种类型,都是各种类型的集合,以列表为例,如果列表中包含列表,就形成嵌套。 这两种类型几乎是所有python脚本的主要工作组件 。 这种结构信息是可变的可修改的。不像常量,一旦定义便不能再修改。

  • [X] 列表 列表有以下几大属性,或者说是特点:
    1. 任意对象的有序集合
    2. 通过偏移量来读取
    3. 长度可变,异构及任意嵌套
    4. 属于可变序列分类 与字符串、常量相比而言,列表是可变的,可以进行修改,增加、合并 ,删除等操作。
    5. 对象引用数组
    6. 列表元素以逗号分隔

    在标准python解析器中,列表就是C数组,而不是链接结构。

    • [X] 列表的操作

      关于列表的操作,我们可以通过help(list)或者 dir(list) ,或者用真实的列表替换关键词list 来查看帮助文档。 除此之外,还有一些其他固定的可用操作。 这里先了解一些常用的简单的列表操作方法:

      Table 7: 列表操作
      方法 释义 示例
      l=[] 定义列表 l=['a',2,['b','c,d']]
      l=list(…) 定义列表  
      l=[c * 4 for c in 'hal'] 定义列表  
      l.append() 列表末尾添加新成员,列表、字典作用新成员 l.append(['a',2,'b']
      l.clear() 清空列表 l.clear()
      l.copy(value) 复制列表 l.copy()
      l.count(value) 统计某个成员在列表中出现的次数 l.count('b'),l.count(l12)
      l.extend(value) 添加新的内容(如果是列表、字典,则将 l.extend([3,{4,5}])
        字典、列表中的成员逐一添加至原列表,其  
        子列表作用一个整体添加)。如果type(value  
        )=list 则合并,如果type(value)=set,那么  
        字典中的值会反序添加,如果是字符串,则转  
        化为字典进行合并。  
        列表不能添加如l.extend({4,['a']})  
      l.index(value,[start,[stop]]) 返回列表中的值对应的索引序号。在。  
        start –> stop之间如果不存在想要查找  
        的值,则报错 l.index({4,5})
      l.insert(index,object) 在指定索引位置  添加新的列表成员 l.insert(2,{'a','b'})
      l.pop([index]) 根据索引位置删除相应内容。  
        index的值必须是单个整数,不能以列表、字  
        典等形式传入,也就是只能一次删除一个列表  
        成员。如果指定索引不存在则报错。如果不指 l.pop(3)
        定索引值,则默认删除最后一个成员。  
      l.remove(object) 从列表中剔除成员。object必须是完整的成员 l.remove({'a','b'})
      l.reverse() 将列表成员进行反序排列 l.reverse()
      l.sort(key=None,reverse=False)) 该方法默认升序排列。当reverse=Ture时,进  
        行反序排列。但是python3.0前后有点区别:  
        3.0之前,允许不同元素之间进行排序 。  
        3.0之后,不允许不同类型的列表元素进行排序 l.sort()
      l*2 重复列表内容  
      list('hal')+list('berd') 列表合并,实际上是生成了一个新的列表  
      l[i:j]=[] 根据索引替换相应位置的列表元素.从第i个  
        元素开始,包含j个元素。  
      len(l) 返回列表元素的个数  
      3 in l 判断列表l中是否为有3的元素,注意数据类型  
      del l[ [index] ] 删除列表中的某个元素,或者删除整个列表  
      思考 
      通过使用索引,在列表首尾添加新元素。

      1. 答案:
      2. l[len[l]:]=[x]; l[:0]=[x]
      3. 使用索引进行列表调整,可以实现append,remove,pop,insert等功能.
      4. 请注意,添加新元素的数据类型。比如列表与字符串
  • [X] 字典 字典可以说是列表以外最灵活的内置数据结构。 字典有以下属性:
    1. 通过键来存取值而不是通过偏移量,键必须是不可变类型。
    2. 字典元素为无序集合
    3. 可变长,异构,任意嵌套
    4. 属于可变映射类型
    5. 散列表。通过hash运算进行数据检索。与列表一样存储对象的引用而不是拷贝。
      • 字典操作

        Table 8: 字典操作
        方法 释义 示例
        d={} 定义空字典 d={}
        d={'a':'b','name':'halberd'} 定义字典 d={'name':'halberd'}
        d=dict(mappint) 定义字典,这种写法比较复杂难懂。由于dict只能接受 d=dict(( ('key1','value1'),('key2','value2'),… ))
          一个参数,因此在dict()方法内部必须包含一个代表  
          整体的符号,可用的为“(),”“[],” 但是"{},"不能用,dict(())  
          或者dict([]),在最内部为key/value的值信息,这样  
          形成三层结构:  
          第一层为:dict()  
          第二层为:dict(()) 或者 dict([])  
          第三层为:dict((['key1','value1'],('key2','value2'),…))  
        d=dict(zip(keys,values)) 定义字典。 其中keys,与values 的类型分别可以为字符串,  
          列表,或者range()等函数返回的一系列值等 d=dict(zip('abcd',range(1,5)))
        d.clear() 清空字典,不需要传入任何参数。 d.clear()
        d.copy() 将原字典复制出一个新的字典 e=d.copy()
        d.fromkeys(iterable,value) 定义一个字典中的keys,并赋予相同的值.value默认为None dict.fromkeys(['a','b'],'123')
          iterable 可以是列表,也可以是字典。如果是列表,则列表中 dict.fromkeys({'name':'halberd','age':20},100)
          每个成员都会转换成key,如果是字典,则将value 赋值给字典  
          中的key  
        d.get(key[,values]) 取出字典中键对应的值。也可以使用value给予一个新的值。但  
          对原来的字典无影响。不写value部分的时候取出的是字典中key  
          对应的值,此时相当于dict[key]。写value里,得到的结果是 d.get('name'[,'guess'])
          value  
        d.items() 以列表返回可遍历的(键, 值) 元组数组 d.items()
        d.keys() 以列表返回一个字典所有的键 d.keys()
        d.values 以列表返回一个字典所有的值 d.values()
        d.pop(key[,value]) 删除字典中的key及对应的值,同 del d[key] d.pop('name'[,'halberd'])
        d.popitem() 此方法不需要任何参数,默认删除最后一个key:value. 返回的 d={'name':'halberd','age':2,'gender':'male'}
          是被删除的key 及对应的value,以元组形式返回,但是如果是空 d.popitem()
          字典,则返回错误信息  
        d.setdefault(key[,value])) 返回key对应的值,但是如果key在原字典中不存在,则追加 d.setdefault('gender','male')
          如果key不存在,并且没有提供对应的value,则默认是'None'  
        d.update() 1. 合并字典。比如dict1与dict2 dict1.update(dict2)会将 d2={'gender':'male'}
          dict2 的内容合并至dict1,如果dict2包含于dict1,则无变化 d.update(d2)
          2. dict1使用update将其他类型的数据,以字典key:value的形 d.update(work='IT-migrant-worker',married='NO')
          式合并到dict1中 d.update((['work','IT-migrant-worker'],['married','NO']))
            d.update([('work','IT-migrant-worker'),('married','NO')])
            d.update(zip(('work','married'),('IT-migrant-worker','NO')))
            d.update(zip(['work','married'],['IT-migrant-worker','NO']))
        len(dict) 计算字典key=value的个数 len(d)
        del dict[key] 删除字典中某一个key 及对应值,同dict.pop(key) del d['name']
        del dict 删除字典 del d
 

python 之 列表与字典的更多相关文章

  1. python中列表和字典常用方法和函数

    Python列表函数&方法 Python包含以下函数: 序号 函数 1 cmp(list1, list2)比较两个列表的元素 2 len(list)列表元素个数 3 max(list)返回列表 ...

  2. python之列表、字典的使用

    一.概述:以后你在Linux里面写Python脚本的时候会经常用到Python列表.字典,因为你在以后写脚本的时候,大多数情况下都是对文件进行操作处理,使用字典和列表可以很好的操作文件,得出你想要的结 ...

  3. Python之列表&元组&字典

    今天学习了Python的基本数据类型,做以下笔记,以备查用. 一.列表 列表的常用方法: 1.append()方法 def append(self, p_object): # real signatu ...

  4. python中列表 元组 字典 集合的区别

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...

  5. python 将列表嵌套字典的unicode字符串转换为str格式的字符串的方法

    今天在进行django开发的过程中遇到了一个非常棘手的问题, 因为需求原因, 需要将一份数据存为json格式到数据库中, 如下面这种格式: list_1 = [{"name":&q ...

  6. **python中列表 元组 字典 集合

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. 1.列表 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔. 列表的特 ...

  7. python数组列表、字典、拷贝、字符串

    python中字符串方法 name = "I teased at life as if it were a foolish game" print(name.capitalize( ...

  8. Python学习-列表元组字典操作

    一.列表 列表是Python的基本数据类型之一,它是以 [] 括起来的,内部成员用逗号隔开.里面可以存放各种数据类型. # 例如: list2 = ['jason', 2, (1, 3), ['war ...

  9. python进阶---列表、字典、集合相关操作

    基本概念 列表 序列是python中一个基本的数据结构,每个元素都有一个索引index 操作 # 创建列表 list = [] # 修改列表 list[2] = 2001 # 删除列表 del lis ...

随机推荐

  1. JAVA知识笔记

    1.对于volatile修饰的变量,jvm虚拟机只是保证从主内存加载到线程工作内存的值是最新的.更详细介绍参考http://blog.csdn.net/libing13820393394/articl ...

  2. PHP 简单学习(“hello world”,变量,运算符)

    在PHP中: 变量用$来规范 变量名:可以用字母,数字,_来组成,且不能用数字开头(与其他变成命名规范基本一致) <?php $age = 28;    // 变量名 $age = $age + ...

  3. [转] 多核CPU 查看进程分配的CPU具体核id

    转自:https://linux.cn/article-6307-1.html ps. 方法二简明直接 done! 当你在 多核 NUMA 处理器上运行需要较高性能的 HPC(高性能计算)程序或非常消 ...

  4. 为什么python运行的慢

    最近在leetcode刷题,明显的注意到同样的算法,python运行的要慢的多,查资料得到python运行的慢主要原因如下: 一.动态类型导致运行速度慢,在北邮人论坛里面的这篇帖子中有较为详细的解释, ...

  5. MySql delete和truncate区别

    项目 delete truncate 添加where条件 可以添加 不可以添加 执行效率 略高 高 自增长列 delete删除后,插入数据的自增长 列值从断点开始 truncate删除后,插入数据的自 ...

  6. Linker Scripts3--SECTIONS Command

    1.前言 SECTIONS命令告诉链接器如何映射输入段到输出段以及在内存中如何放置输出段,SECTIONS命令的格式如下: SECTIONS { sections-command sections-c ...

  7. Python os.access() 方法

    概述 os.access() 方法使用当前的uid/gid尝试访问路径.大部分操作使用有效的 uid/gid, 因此运行环境可以在 suid/sgid 环境尝试. 语法 access()方法语法格式如 ...

  8. Ubuntu14下nginx服务器链接PHP

    报错:nginx下无法打开php,报错[error] 5040#0: *1 connect() failed (111: Connection ref ... server { listen ; #l ...

  9. you-get 2017-06-02

    可下载优酷土豆的1080p视频 修订版本 针对最近优酷土豆升级后无法下载的问题进行修改 需要安装 python3 和 ffmpeg http://pan.baidu.com/s/1c2hBCe0

  10. Golang 优化之路-空结构[转]

    写在前面 开发 hashset 常用的套路: map[int]int8 map[int]bool 我们一般只用 map 的键来保存数据,值是没有用的.所以来缓存集合数据会造成内存浪费. 空对象 空对象 ...