美文网首页生物信息随笔
详细了解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