python lambda和startwith的一些用法和总结。

   最近在做数据的分析,用到一些简单的过滤,也学习到了,lambda和startwith的一些用法,下面写个东西备忘,首先了解lambda.这个是一个类似函数的小型用法,跟函数的性质差不多,可以跟filter结合使用:

>>> xiaoluo = lambda x,y:x+y
>>> print xiaoluo(1,2)
3
>>> print xiaoluo(3,4)
7

看一下结果:等于是xiaoluo = lambda x,y:print x+y的意思。

>>> a = [1,2,3]
>>> filter(lambda x:x<2,a)
[1]

看一下startwith也是一个过滤的东西,只是在字符串的开头,在我们还没有用re的情况下:

#!/usr/bin/env python
import os
f = open('/etc/passwd','r')
lines = f.readlines()
for line in lines:
    if line.startswith("root"):
        print line

返回结果:

root:x:0:0:root:/root:/bin/bash

   总结:这两个工具用法虽好,但是有一定的局限性,后期使用re之后就用处不大了,

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个Python代码示例,用于根据全基因组文件和注释信息筛选组装后的转录组文件的最长转录本: ```python # 导入必要的库 import gffutils from Bio import SeqIO # 定义全基因组文件和注释文件路径 genome_file = "genome.fa" annotation_file = "annotation.gff" # 定义转录组文件路径 transcript_file = "transcripts.fa" # 创建GFF数据库 db = gffutils.create_db(annotation_file, dbfn='my.db', force=True, keep_order=True) # 定义一个函数,用于获取基因的所有转录本及其长度 def get_gene_transcripts(gene_id): gene_transcripts = [] for transcript in db.children(db[gene_id], featuretype='transcript', order_by='start'): transcript_id = transcript.id transcript_length = len(db[transcript_id].sequence(genome_file).seq) gene_transcripts.append((transcript_id, transcript_length)) return gene_transcripts # 打开转录组文件 with open(transcript_file, "w") as output_handle: # 遍历所有基因 for gene in db.features_of_type('gene', order_by='start'): gene_id = gene.id # 获取基因的所有转录本及其长度 gene_transcripts = get_gene_transcripts(gene_id) # 按照转录本长度从大到小排序 gene_transcripts.sort(key=lambda x: x[1], reverse=True) longest_transcript_id = gene_transcripts[0][0] # 将最长的转录本写入输出文件 output_handle.write(f">{longest_transcript_id}\n{db[longest_transcript_id].sequence(genome_file).seq}\n") ``` 使用方法: 将上面的代码保存为一个Python文件,然后使用以下命令执行: ``` python script.py ``` 其中,`script.py`是保存代码的文件名。执行完后,会生成一个名为`transcripts.fa`的输出文件,其中包含了所有基因的最长转录本序列。注意,代码中的`genome_file`、`annotation_file`和`transcript_file`变量需要根据自己的实际情况调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值