美文网首页生物信息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