python的基本数据结构_python学习笔记-基本数据结构

这篇博客介绍了Python的基本情况,包括代码块结构、面向对象编程和丰富的资源库。重点讲解了Python的基础数据类型,如数值型(整型、浮点型、复数)、字符串型,以及相关的操作,如连接、分割、去除、替换、切片等。还提到了布尔值、变量的命名规则和赋值,以及列表、元组、字典和集合等数据结构的使用方法。
摘要由CSDN通过智能技术生成

Python 学习笔记-1

写在最前面,因为组内小伙伴要走,生信团队由原来的7个人,慢慢的变的只有我一个人了,需要紧急突击下python,因为有python的流程要交接维护

python 基本情况

代码块的结构使用缩进进行区分,这下倒是不用担心忘记末尾的结束标志“;”了;但是引入了一个小问题,更改复杂代码时,结构调整的问题

面向对象编程,强调代码的复用行和跨脚本的调用

丰富的资源库是个保障

现在处于上升期,比较活跃,比如我想进行邮件的解析,python找到的起码是18,19年的分享,但是perl的都是08,10年的

跟perl和R一样,使用#进行注释,注释重要信息是很重要的代码编程习惯,有助于提高可读性和降低维护代码难度,增加团队协作的流畅性

python 基本数据类型

e4bfa8415c10

python-数据结构-思维导图.png

常量

不能改变,具备字面的意义

数值型

数值类型

2 # 整型 int

2.11 # 浮点型 float

2.3-4.5j # 复数 complex

数值类型转化

type(2) # 使用type可以返回其类型,该例中返回int

float(2)# 前面直接加类型,可以进行可以转化的相互的转化,该例中返回2.0;float,int,str

数字运算

3+2

3-5

3*4

3/4 # 这里要说明一下,在python2中,两个整型数字相除,得到的是整数,python3中,得到的是浮点数,这一点python3中的做法,更合理,主要是跟perl中一至,哈哈

判断

3>4 ## False

3<=4 ## True

3==3 ## True 仅对刚开始接触编程的小伙伴提醒一下,几乎所以编程语言中相等的判断都是用双等号的,因为“=”一般用于赋值了

字符串型

引号(单双引号的用法一致)之间的符号集,包括字母,数字,下划线,空格,制表符等

这里有一点,因为python中换行就代表新的语句,所以引入了三单引号和三双引号的换行不换新变量或者语句的语法,个人感觉这个好像md语法中的(```)表示代码块的一种用法

a = '''

sfdg

dfg

'''

运算操作

连接

a = "liubei " " is learning " "python "

a = "liubei " + " is learning " + "python "

# 上述结果相同,但是一般使用下面的方法,可读性更好,便于维护

# 因为连接时默认没有任何连接符号,所以需要显示的加入空格等你想使用的分割符号

分割

b=a.split(" ")

print(b)

# ['liubei', '', 'is', 'learning', 'python']

# 以空格为分隔符,将a分割为列表;当然根据实际需要分隔符可以是任意的字母数据及其他符号或组合

去除一些字母符号等

b=a.strip(' ')

# 去除a任意两端的空格给到b变量;注意这里的a的值并不会因此发生改变,并且strip可以是字母,空格,下划线等,但是不能是空

c=a.lstrip(" ") # 去除a左端的空格,因为a左端没有空格,所以c与a实际是一致的

d=a.rstrip(" ") # 去除a右端的空格

## 注意上述情况,不管多少个要去除的边际的东西,一次性全部去除完

替换

e=a.replace("i",'') # 将a中所有i替换掉,a本身并不会发上改变

f=a.replace("i","",2) # 将a中前两个i替换掉(如果a中不足2个i,全部替换),a本身并不会发上改变,

重复

l=a*3 # l由3个a重复而成,“ liubei is learning python liubei is learning python liubei is learning python”

切片或者说索引

a[2] # 下标为2的字符,因为python的计数从0开始编码,所以是第三个元素

a[2:8] # 获得2-8之间的元素,(如果最后一个数字超出元素下标的最大值,直接取到最后,并不会报错)

a[2:6:3] # 添加了每隔个字符取一个

a[2:] # 取下标从2开始,之后所有的字符

a[::-1] # 相当于变量进行了发转,每一个字符都进行了转换,有点像reverse的结果

成员判断

"s" in a # True 判断是否在其中

"s" not in a # False 判断是否不在其中

字母的大小写转化

a.upper() # 返回全部字母大写的字符串

a.lower() # 返回全部字母小写的字符串

a.capitalize() # 返回首字母大写的字符串,并且这个首字母必须是第一个,如果之前有空格的化,会被认为不是首字母,所以不进行转化

a.center(200,"*") # 返回长度200的居中字符串,并且以*在前后进行空白补充

统计,判断

a.count("o") # 统计‘o’在a中出现的次数

a.find("o") # 返回第一次出现o的下标,否则返回-1

a.index("o") # 返回第一次出现o的下标,否则返回异常

布尔值(真假)

True:真:非0数字,非空列表,非空字典,非空字符串

False:假:0,空列表,空字符串,空字典

变量

可以储存信息,同时可以对他们进行操作

命名规则:

标识符的第一个字符必须是字母表中的字母或者下划线

标识符的其他部分可以由字母,数字,下划线组成

区分大小写(即大小写字母差异的表示符被认为是两个变量)

python中变量不需要提前申明,可以直接赋值

变量的使用受到结构的限制,在结构内部赋值的变量可能不能在结构外调用,这个后面详细讨论,这里强调下有这个事情

因为没有表示的其他固定用法,所以不能使用python内置的标识符进行赋值如:in,int等

所有编程语言规范里都会要求命名要能看懂其指代的含义,不要出现:a,b,c这种命名,虽然理论上没有问题,但是后续代码的查看,维护是个很大的问题呢,可读性也会很差,不利于交流合作

ngs_seq_quality = 20 ## 好的变量名称,明确可以看出是二代测序序列的质量

a = 20 ## 不好的变量命名,自己半个月后都不知道这个a是个什么鬼东东,更别说别人看的时候的心情

变量赋值:

a = 1 # 数字

a = 'string' # 字符串

a = [1,2,'s'] # 列表,即数组的概念

a = ['a':1,"d":2] # 字典,perl中称为hash,哈希

x=y=z=1 # 多重赋值,多个变量直接赋值为同一值,这个比perl的用法简单

x,y,z=1,2,3 # 多元赋值,太爱这个了,可以减少很多行看上去类似的

## 变量赋值时自己首先要搞清楚数据类型,这个我现在其实还是有点晕的,准备五一劳动节好好学习,对于使用perl的孩子来说,习惯了自由洒脱的编码风格,不知道后续这个会遇到啥样的好玩的问题了

## python中因为变量没有其他的标识符,所以,一旦标量,列表,哈希等使用了相同的单词组合作为变量名称,就会存在最后的覆盖前面的变量的问题,所以命名一定要慎重,并且要先构思好框架,再进行撰写

python基础数据结构

列表/数组

可以保存任意数字,字符等的有序排列的数组,能通过下标进行数据的索引

array1 = [1,2,3,"a"] # 定义并赋值

len(array1) # 获得列表的长度,即元素个数

array1.sort() # 列表排序

array1.reverse() # 列表反向

array1.append("b") # 列表末尾追加新元素

array1.remove(1) # 列表删除特定元素,只删除遇到的第一个,不删除后面的,并且如果没有该元素会报错,无返回值,数组直接进行的操作

"\t".join(array1) # 以tab键将列表连接,返回字符串

## 这里大部分的用法跟perl相似,sort,reverse,append,len,但是预留字和写法确实有差别

元祖

与列表相似,但是不能修改,一般是一些不允许修改的预留的会使用

适合严格纠错类的测试等的使用

字典

无序,键值对一一映射的关系,键是唯一的,值是可以相同的;这里可以想象成键是每个人的身份证号码,值是名字,身高等,键唯一,值可以相同;通过键可以查到每个数据,但是不能通过值,或者顺序调取

hash={"a":1,"b":2} # 进行一个新的字典的定义并赋值

hash["c"]=3 # 新添加一个键值对,如果键已经存在,会覆盖之前获得的值

del hash["a"] # 删除键为a的键值对

len(hash) # 获得字典的键值对的数量

hash.keys() # 获得字典的所有键值对的键,这里注意下,它返回的并不是一个标准的列表,所以这个实际使用的时候应该还是会有其他问题,需要转化的

hash.values() # 获得字典的所有键值对的值,重复的也会重复的输出

for k,v in hash.items(): # 这里k和v是hash里一一对应的键值对,可能更好理解,应用场景也更好写

for k in hash: # 这里k是hash里的键的遍历,跟perl中的几乎一摸一样,当年perl中hash是很值得骄傲的地方,多位hash,hash的数组,数组的hash非常好用

集合

无序的不重复的元素组成的,由这个性质决定了它很适合进行比较元素的比较,并且与字典的键与某些方面的一致性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值