美文网首页生物信息随笔
详细了解python基本数据类型

详细了解python基本数据类型

作者: 南之绿桑 | 来源:发表于2019-11-28 20:35 被阅读0次

    一下是我个人的Python笔记,由于是初学者,因此内容很详细。
    在学习Python之前,最主要的是要弄明白我们Python有那些数据对象,以及他们的特点,操作方式等。是进一步学习的基础。
    Python具有自己独特的基础数据结构:“sequence”。sequence包括一些其他的数据类型,其中string是有序的字符串序列;其他的sequence还有list和tuple。这些数据类型有相同的特点。sequence数据中的元素有顺序,可以建立索引index,sliced,interated。除了sequence还有其他的无序的数据类型,dictionaries和sets,dictionaries存储的是key和value之间的关系;set只是存储无序的value的集合。

    sequence相关的数据类型

    strings字符串

    字符串相关的函数:
    替换 replace()

    >>> DNAseq="TTGCTAG"
    >>> mRNAseq=DNAseq.replace("T","U")
    >>> mRNAseq
    ’UUGCUAG’
    

    计数 count()

    #计算CG含量
    >>> c=DNAseq.count("C")
    >>> g=DNAseq.count("G")
    >>> float(c+g)/len(DNAseq)*100
    42.857142857142854
    

    find(),找不到输出-1;index()找不到报错
    split(",")将字符串分割为list;join()用法相反

    >>>  "i am a girl !".split()
    ['i', 'am', 'a', 'girl', '!']
    >>> ";".join(["A","C","A","T"])
    'A;C;A;T'
    

    lists 是python中的主力数据类型

    list是通用的对象类型。是一系列向量的有序集合。['A','T','C',''G],这里有四个向量,list里可以包含不同的数据类型。一个list中可以包含其他list这里和R很类似。

    #构建空list,我们可以向其中添加其他向量
    >>> empty_list=[]
    

    list的初始化,如果提前知道要构建的list包含多少个元素,可以这样构建

    >>> codons=[None]*5
    >>> codons
    [None,None,None,None,None]
    

    list的理解式 ,可以从另一种方式去定义一个list,一个list可以从另一个list中定义出来。
    和集合的公式定义一样,除了枚举法定义list也可以利用理解式定义list

    >>> A=[0,1,2,3,4,5]
    >>> [3*x for x in A]
    [0, 3, 6, 9, 12, 15]
    

    函数也可以用来理解list,也可以加入条件句

    >>> animals = [' king kong', ' godzilla ', 'gamera ']
    #strip()可以删除空格
    >>> [y.strip() for y in animals]
    ['king kong', 'godzilla', 'gamera']
    >>> [y.strip() for y in animals if 'i' in y]
    ['king kong', 'godzilla']
    

    选取list中的值和R语言的用法很像,只不过注意是从0开始计数。

    >>> first_list=[1,2,3,4,5]
    >>> first_list[0]
    1 
    

    =不能实现拷贝函数,一旦源list发生变化,拷贝后的数据也会发生变化,可以用copy model,或者用b=a[:],可以用来拷贝a到b。
    list比较灵活,三种方式加元素:可以加(append加在末尾)插入(insert)扩展(extend:添加一个list到list末尾)里面的元素,有点类似与加号的效果(+)。
    三种方式减元素:pop(元素标号),remove(元素),del

    Tuples

    tuples是一种不会改变的list,Python的对象通常分为变和不变两种。
    point=(1,2,3)
    tuples的处理速度要更快。

    Sequence的一般性质

    indexing,获得list或者strings中的元素,也可以嵌套选择元素

    >>> seqdata=["abcdf",3,"sdreg"]
    >>> seqdata[0][1]
    'b'
    

    Slicing

    可以选择sequence中的一部分元素。这里选择的元素标签和以往的形式不一样。这里的标签指代隔离元素的栅栏。


    image.png
    >>> mysequence="python"
    >>> mysequence[0:2]
    'py'
    >>> mysequence[4:]
    'on'
    #还有第三个指标,这个指标表明跳跃选择
    >>> mysequence="abcdefghijk"
    >>> mysequence[1:10:3]
    'beh'
    ##倒序
    >>> mysequence="abcdefghijk"
    >>> mysequence[1:10:3]
    'beh'
    

    成员判断用in

    >>> point=(11,12,14)
    >>> 11 in point
    True
    

    sequence,list, turple都可以用+进行连接,但是必须是同一类型的数据

    len(长度),max(最大),min(最小)

    将sequence转换为list

    >>> list("abcd")
    ['a', 'b', 'c', 'd']
    

    这里提供了一种方法可以间接的修改string,因为string是无法直接修改的。然后再转为sequence,用join(),但是其实不是很高效。

    Dictionaries

    mapping映射,通过名字召唤值key:value

    >>> IUPAC={'A':'ALA','C':'CYS','G':'GLU'}
    #IUPAC是字典的名字
    >>> IUPAC['A']
    'ALA'
    >>> print("c present for the amino acid "+IUPAC['C'])
    c present for the amino acid CYS
    

    key只有不变对象,string,tuple和数字能够当。
    dict()能够用来创建字典

    >>> rgb=[('red','ff0000'),('green','00ff00'),('blue','000ff')]
    >>> colors=dict(rgb)
    >>> colors['green']
    '00ff00'
    >>> rgb=dict(red='ff0000',green='00ff00',blue='000ff')
    >>> rgb
    {'red': 'ff0000', 'green': '00ff00', 'blue': '000ff'}
    #有时需要创建空的字典,然后加入key和value
    >>> rgb={}
    >>> rgb['red']='ff000'
    #加入新的key
    >>> rgb['s']='Ser'
    

    字典的操作函数:IUPAC.keys(),IUPAC.values()
    这里函数Python3.x的返回值是一种新的对象叫dict view

    >>> 'Z' in IUPAC
    False
    >>> IUPAC.items()
    dict_items([('A', 'ALA'), ('C', 'CYS'), ('G', 'GLU')])
    #返回的是一个list包含一个个有key和value组成的tuple元组
    >>> list(IUPAC.values())
    ['CYS', 'GLU']
    #可以转变为list
    

    通过key对于字典值value的安全访问函数:get()

    >>> IUPAC.get('A')
    'ALA'
    >>> IUPAC.get('Z')
    >>> IUPAC.get('A','No translation')
    'ALA'
    >>> IUPAC.get('Z','No translation')
    'No translation'
    #删除值用del
    >>> del IUPAC['A']
    >>> IUPAC
    {'C': 'CYS', 'G': 'GLU'}
    

    字典相关的函数方法:


    image.png

    这里有一点值得注意的是,dict view类型的数据在Python3.x中和原字典保持一致,但是在2.x版本中则不是。

    >>> d={1:'a',2:'b',3:'c'}
    >>> k=d.keys()
    >>> k
    dict_keys([1, 2, 3])
    >>> d[6]='p'
    >>> k
    dict_keys([1, 2, 3, 6])
    

    Sets

    是无序的对象的集合

    这个set也不是在其他的语言中常见的形式。即使在python中也不是很常用。set是数学中常见的结果。和list很像,但是有两个突出的差异:元素是无序的,而且不重复
    这里的集合常用于各种数学上的集合操作。

    创建集合set(),集合中加元素,.add()

    >>> first_set=set(['CP0140.1','EF3613.1','EF3616.1'])
    >>> first_set=set()
    >>> first_set.add('CP0140.1')
    >>> first_set.add('EF3613.1')
    >>> first_set.add('EF3616.1')
    >>> first_set
    {'EF3613.1', 'CP0140.1', 'EF3616.1'}
    

    在python3.x中有创建集合的新语法,和数学上集合的创建一样

    >>> first_set = {'CP0140.1','EF3613.1','EF3616.1'}
    >>> first_set
    {'EF3613.1', 'CP0140.1', 'EF3616.1'}
    

    也可以通过理解创建集合(数学上的公式法)。因为集合无法添加重复性元素,隐私当你添加一个重复性元素是也没有影响。因此常用来对list数据进行去冗余。

    >>> {2*x for x in [1,1,2,2,3,3]}
    {2, 4, 6}
    >>> set([2,2,3,4,5,3])
    {2, 3, 4, 5}
    

    集合操作

    • 交集intersection和&
    >>> other_set=set(['CP0140.2','EF3613.1','EF3616.2'])
    >>> common=first_set.intersection(other_set)
    >>> common
    {'EF3613.1'}
    >>> common=first_set & other_set
    >>> common
    {'EF3613.1'}
    
    • 并集union 和 |
    • 差difference和-
    • 对称差异symmetric difference和^


      image.png

    和其他数据类型共享的操作

    max,min,len,in
    list()转换为list型数据

    固定的集合:Frozenset()

    这种固定的数据类型无法用remove()和add()等函数去操作。而且可以作为字典的key

    给一个变量赋予一个值,以及给一个对象绑定一个名字

    这里有一种赋值的特殊情况需要注意:

    >>> a=3
    >>> b=[1,2,a]
    >>> b
    [1, 2, 3]
    >>> a=5
    >>> b
    [1, 2, 3]
    

    原因可有下图理解,这里a在第二次赋值时就已经破坏了原来的赋值,这里的a已经不是原来的a了,因此后面不会变。


    image.png

    但是另一种情况是这样:

    >>> c=[1,2,3]
    >>> d=[5,6,c]
    >>> d
    [5, 6, [1, 2, 3]]
    >>> c.pop()
    3
    >>> c
    [1, 2]
    >>> d
    [5, 6, [1, 2]]
    

    可以借助下图理解,这里c仍然叫c,并没有被破坏,只是被改变了,因此后面d中的c会随着c的变化而变化。


    image.png

    相关文章

      网友评论

        本文标题:详细了解python基本数据类型

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