深入理解 Python 中的不同序列类型,不但能让我们避免重新发明轮子, 它们的 API 还能帮助我们把自己定义的 API 设计得跟原生的序列一样, 或者是跟未来可能出现的序列类型保持兼容。

列表推导

第一种方法,用for循环逐个向列表里添加数据。

第二种方法,就是列表推导的方法。通过for循环快速构造列表。

第三种方法是map/filter组合构造法。filter用于过滤序列,map对指定序列做映射,对每一个序列中的元素调用函数,返回新的列表。

在python2中,使用列表推导可能会造成变量泄露的问题,即列表内for循环的变量值影响到列表外相应的变量的数值。在python3中,列表推导中的for是局部变量,并不会造成变量泄露。

生成器表达式

生成器表达式与列表推导的区别就在于,生成器表达式使用的是圆括号,动态构成列表。列表推导构造时,一次性分配空间,可能会造成对内存空间的浪费,用生成器表达式则是动态扩充空间,适应需求。

元组拆包

    元组其实是对数据的记录:元组中的每个元素都存放了记录中一个字段 的数据,外加这个字段的位置。正是这个位置信息给数据赋予了意义。 

    如果只把元组理解为不可变的列表,那其他信息——它所含有的元素的 总数和它们的位置——似乎就变得可有可无。但是如果把元组当作一些 字段的集合,那么数量和位置信息就变得非常重要了。

元组拆包就是记录分配给属性的过程。

具名元组

collections.namedtuple 是一个工厂函数,它可以用来构建一个带 字段名的元组和一个有名字的类——这个带名字的类对调试程序有很大 帮助。

调用namedtuple方法时,传入两个参数,第一个是元组名字(或可当成类的名字),第二个参数就是类里面的各个属性的名字。

切片

在切片和区间操作里不包含区间范围的最后一个元素是 Python 的风格, 这个习惯符合 Python、C 和其他语言里以 0 作为起始下标的传统。

可以用 s[a:b:c] 的形式对 s 在 a 和 b 之间以 c 为间隔取值。c 的值还可以为负,负值意味着反向取值。

如果把切片放在赋值语句的左边,或把它作为 del 操作的对象,我们就 可以对序列进行嫁接、切除或就地修改操作。

序列的+和*

    通常 + 号两侧的序列由 相同类型的数据所构成,在拼接的过程中,两个被操作的序列都不会被 修改,Python 会新建一个包含同样类型数据的序列来作为拼接的结果。

my_list = [[]] * 3 来初始化一个 由列表组成的列表,但是你得到的列表里包含的 3 个元素其实是 3 个引用,而且这 3 个引用指向的都是同一个列表。

根据实际情况可选择列表推导:

喜欢扫码关注

dnastar拼接反向互补序列_一起看流畅的python:序列构成的数组相关推荐

  1. python 闭包_一起看流畅的python:函数装饰器和闭包

    装饰器 装饰器是可调用的对象,其参数是另一个函数(被装饰的函数).装 饰器可能会处理被装饰的函数,然后把它返回,或者将其替换成另一个 函数或可调用对象. 装饰器的一个关键特性是,它们在被装饰的函数定义 ...

  2. python程序设计简明教程知识点_[转载]看完《python简明教程》笔记及第一个python程序...

    主要是摘抄了一些书上需要注意的地方: 1.Python 是一门解释性语言. 在计算机内部, Python 解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行. 2.版 ...

  3. python创建多线程_初学者看过来:Python中多线程和多处理的指南

    使用Python分析数据,如果使用了正确的数据结构和算法,有时可以大量提高程序的速度.实现此目的的一种方法是使用Muiltithreading(多线程)或Multiprocessing(多重处理). ...

  4. 手机python 3.8解释器_不看后悔!Python 3.8 新功能大揭秘

    赋值表达式遵循了Python一贯简洁的传统,就像列表解析式一样.其目的在于避免在特定的Python编程模式中出现一些枯燥的样板代码.例如,上述代码用一般写法需要多写两行代码. 2.仅通过位置指定的参数 ...

  5. python数组类型_一文搞懂Python中的所有数组数据类型

    关于我 编程界的一名小小程序猿,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. 联系:hylinux1024@gmail ...

  6. **生信自学记录1——获取Fastq格式的反向互补序列**

    ` 生信自学记录1--获取Fastq格式的反向互补序列 总共分为三步 1.读取基因序列的str格式,返回反向互补序列str 2.打开fastq格式的文本提取基因序列,返回互补序列list 3.读取互补 ...

  7. gff文件_根据gff/gtf等注释文件取负链上的序列:先反向互补染色体再截取?还是先截取区间再反向互补序列?...

    最近需要根据注释文件在基因组上截取序列,突然想到一个问题:对于下面这样在负链上的基因,我们是先将整条染色体反向互补再截取对应区间?还是先截取对应区间再反向互补呢? 首先亮出答案:先截取区间,再反向互补 ...

  8. 生物信息学算法之Python实现|Rosalind刷题笔记:004 求DNA的反向互补序列

    碱基互补配对原则是:A 与 T 配对,G 与 C 配对. 求 DNA 的反向互补序列分两步:第一是反向,第二是互补.比如序列"ATGC",反向就是"CGTA", ...

  9. pythoncookbook和流畅的python对比_为什么你学Python效率比别人慢?因为你没有这套完整的学习资料...

    以下资源免费获取方式! 关注!转发!私信"资料"即可免费领取! 入门书籍 1.<Python基础教程>(Beginning Python From Novice to ...

最新文章

  1. python向量计算库教程_NumPy库入门教程:基础知识总结
  2. html 表单内容怎么获取不到,jquery中formdate一直获取不到对象中的[0]的值 包括本身也是一个空的数据怎么办?...
  3. Linux 设备模型之 (kobject、kset 和 Subsystem)(二)
  4. C++Exponential search指数搜索的实现算法(附完整源码)
  5. [移动网关]2G环境下资源下载有一定概率失败,客户端日志显示收到403错误
  6. java生成excel文件
  7. OptionRoom将在Bounce授权拍卖平台进行Polkadot IDO
  8. 谈谈java中的集合框架
  9. 电子表格和oracle,##请问数据库和电子表格之间有什么区别
  10. python第四章单元测试_MOOC选修课答案第四章单元测试答案_Sar编程基础期末答案...
  11. [Lab1]-EIGRP试验
  12. 【物流选址】基于matlab粒子群算法求解多物流中心选址问题【含Matlab源码 1458期】
  13. STM32 f103 实现命令终端
  14. Ubuntu:back up whole system
  15. java nlpir_NLPIR分词工具的使用(java环境下)
  16. LabVIEW编程LabVIEW控制PXI-5122例程与相关资料
  17. python reshape函数参数-1(X.reshape(X.shape[0], -1).T)
  18. e430c参数 thinkpad_联想ThinkPad E430c(33651E1)
  19. 用c语言向无盘符分区拷文件,用GHOST软件将PC硬盘上C分区制作成映象文件﹡.gho的步骤...
  20. 计算机储存容量单位的进率,进制、存储与容量

热门文章

  1. excel撤销工作表保护默认密码_我的表格我做主:Excel工作表不想被别人改动,设置一个密码保护...
  2. Git 之五 通信协议(HTTPS、SSH、Git)、使用远程仓库(GitHub、GitLab、Gitee等)
  3. C++ : 矩阵初等行变换,化成最简矩阵
  4. python设置路径_Python探索之修改Python搜索路径
  5. 支持自定义的离线语音模块WT516P6Core 串口协议使用说明
  6. 全志 添加PWM7参数
  7. int类型存小数 mysql_MySQL面试题-数据类型
  8. ajax 最大链接数_leetcode之第三大的数
  9. mysql 报错1045 - Access denied for user “root” @ 192.111.111.11 (using password: YES)
  10. sql语句中嵌套2层循环