热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

Python学习笔记-1写在最前面,因为组内小伙伴要走,生信团队由原来的7个人,慢慢的变的只有我一个人了,需要紧急突击下py

Python 学习笔记-1

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

python 基本情况

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

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

丰富的资源库是个保障

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

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

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非常好用

集合

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



推荐阅读
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • Introduction(简介)Forbeingapowerfulobject-orientedprogramminglanguage,Cisuseda ... [详细]
author-avatar
追求的幸福2012_102
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有