美文网首页生物信息Python自动流程化高效率工作
Python 学习之 元组、列表、字典、集合

Python 学习之 元组、列表、字典、集合

作者: 热衷组培的二货潜 | 来源:发表于2019-08-06 19:00 被阅读12次
    # 3.1 数据结构和序列
    
    image.png

    元组

    元组 tup 是一种固定长度、不可变的 Python 对象序列。创建元组最简单的办法就是用逗号分隔序列值

    元组不可修改

    • tuple() # 任意序列或迭代器转换为元组
    • + 来连接元组来生成更长的元组
    • print('a = {0}, b = {1}, c = {2}'.format(a, b, c))
    • x.count('a') 计算 a 在元组 x 中出现的次数
    tup = 1, 2, 3
    tup
    
    (1, 2, 3)
    

    列表

    与元组不同,列表的长度是可变的,它说包含的内容也是可修改的,可以使用 [] 或者 list 类型函数来定义列表

    列表可修改

    • zip() 将列表元组或者其它序列的元素配对,新建一个元组构成的列表

    • list.append() 增加元素

    • list.insert(1, 'red') 插入元素到指定位置

    • list.pop(2) 将指定位置的元素移除并返回

    • list.remove('red') 定位一个符合要求的值并移除它

    • list.extend([1, 2]) 向列表中添加多个元素,比 + 这种方式要好。由于在连接过程中创建了新的列表,并且还要复制对象,使用 extend 将元素添加到已经存在的列表是较优的方式

    • list.sort() 排序

      • list.sort(key = len) 按照字符长度排序
    • sorted() 返回一个已经排序好的新列表

    • list[start : end] 注意:起始位置 start 是索引包含的,而结束位置 stop 的索引并不包含,因此元素的数量为 end - start

      • list[:5] 前五个
      • list[3:] 第三个以后的
      • list[-4:] 后四个
      • list[-6, -2] 倒数第六个到倒数第三个
      • list[::2] 步进值在 :: 后面使用,意思是每隔多少个数取一个值
      • list[::-1] 将列表或者元组进行翻转
      # 左闭右开区间
         A  B  C  D  E  F
       0  1  2  3  4  5  6
      -6 -5 -4 -3 -2 -1  
      string[2:4] → [C, D]
      string[-5: -2] → [B, C, D]
      
    • enumerate(list) 返回 (i, value) ,其中 value 是元素的值,i 是元素的索引(即位置)

    • zip(a, b) 将列表、元组或者其它序列的元素配对,新建一个元组构成的列表, 当 a, b 序列长度不一致时候,生成的列表长度由最短的决定, 常与 enumerate 同时使用

      • enumerate(zip(seq1, seq2))
      seq1 = ['foo', 'bar', 'baz']
      seq2 = ['one', 'two', 'three']
      list(zip(seq1, seq2))
      # [('foo', 'one'), ('bar', 'two'), ('baz', 'three')]
      
      for i, (a, b) in enumerate(zip(seq1, seq2)):
          print('{0}: {1}, {2}'.format(i, a, b))
      # 0: foo, one
      # 1: bar, two
      # 2: baz, three
      
    • reversed() 将序列的元素倒序排列,reversed 是一个生成器,如果没有实例化(例如使用 list 函数或者进行 for 循环)的时候,他不会产生一个倒序的列表

    a_list = [1, 2, 3, None]
    a_list
    
    [1, 2, 3, None]
    

    字典

    dict( 字典 ) 可能是 Python 内建数据结构中最重要的。它更为常用的名次是哈希表或者关联数组,字典是拥有灵活尺寸的键值对集合,其中键和值都是 Python 对象。用大括号 {} 是创建字典的一种方式,在字典中用逗号将键值对分隔

    • del d1['a'] 删除关键字
    • d1.pop('a') 删除, pop 在删除的同时返回被删除的值,并删除键
    • list(d1.keys()) 输出键
    • list(d1.values()) 输出值,顺序与 key 输出的键是一一对应的
    • update({'a': 'foo', 'b': 12}) 合并两个字典,如果传给 update() 的数据也含有相同的键,则它将会被覆盖
    • dict(zip(range(5), reversed(range(5)))) 将两个序列按照字典配对
    • hash() 检查一个对象是否可以哈希化(即是否可以用作字典的键)
    empty_dict = {}
    d1 = {'a': 'some value', 'b': [1, 2, 3, 4]}
    d1
    
    {'a': 'some value', 'b': [1, 2, 3, 4]}
    

    集合

    集合是一种无序且元素唯一的容器。类似于字典,但是只有键没有值。集合可以由两种方式创建,通过 set() 函数或者用字面值集与大括号的语法

    集合支持数学上的集合操作:联合、交集、差集、对称差集

    函数 替代方法 描述
    a.add(x) N/A 将元素 x 加入到集合 a 中
    a.clear(x) N/A 将集合重置为空,清空所有元素
    a.remove(x) N/A 从集合 a 中移除某个元素
    a.pop() N/A 移除任意元素,如果集合为空的输出 KerError
    a.union(b) a | b a 和 b 中所有的不同的元素
    a.update(b) a |= b 将 a 的内容设置为与 b 的并集
    a.intersection(b) a & b a, b 中同时包含的元素,即交集
    a.intersection_update(b) a &= b 将 a 的内容设置为 a 和 b 的交集
    a.difference(b) a - b a 不在 b 中的元素
    a.difference_update(b) a -= b 将 a 的内容设置为 a 不在 b 中的元素
    a.symmetric_difference(b) a^b 所有在 a 或者 b 中,但不是同时在 a 和 b 中元素
    a.symmetric_difference_update(b) a ^= b 将 a 的内容设置为所有在 a 或者 b 中,但不是同时在 a 和 b 中的元素
    a.issubset(b) N/A 如果 a 包含于 b 返回 True
    a.issuperset(b) N/A 如果 a 包含 b 返回 True
    a.isdisjoint(b) N/A a, b 没有交集返回 True
    set([2, 2, 2, 1, 3, 3])
    {2, 2, 2, 1, 3, 3}
    
    {1, 2, 3}
    

    如图:

    image

    参考链接

    相关文章

      网友评论

        本文标题:Python 学习之 元组、列表、字典、集合

        本文链接:https://www.haomeiwen.com/subject/ipbwdctx.html