Python:如何以简短形式调用包含数百个列表的长函数 [英] Python: How to call a long function containing hundreds of lists in a short form

查看:120
本文介绍了Python:如何以简短形式调用包含数百个列表的长函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有数百个名单,例如:

  ABCC8 = ['TRIM29','IGL @','DOCK6' ,'SVEP1','S100A11','EPHA2','KLHL7','ANXA3','NAB1','CELF2','EDNRB','PLAGL1','IL6ST','S100A8','CKLF',' TIPARP,CDH3,MAP3K8,LYST,LEPR,FHL2,ARL4C,IL1RN,ESR1,CD93,ATP2B4,KAT2B,ELOVL5, ,'SCD','SPTBN1','AKAP13','LDLR','ADRB2','LTBP4','TGM2','TIMP3','RAN','LAMA3','ASPH','ID4',' STX11','CNN2','EGR1'] 

APP = ['GULP1','PREPL','FHL1','METTL7A','TRIM13','YPEL5','PTEN', 'FAM190B','GSN','UBL3','PTGER3','COBLL1','EPB41L3','KLF4','BCL2L2','CYLD','SLK','ENSA','SKAP2','NR3C2 ','MAF','NDEL1','EZR','PCDH9','KIAA0494','CITED2','MGEA5','RUFY 3,ALDH3A2,N4BP2L2,EPS15,TSPAN5,SNRPN,SSBP2,ELOVL5,C5orf4,FOXN3,ABCA5,SEC62,PELI1, ,'MYCBP2','USP15','TACC1','SHMT1','RNF103','CDC14B','SYNE1','NDN','PHKB','EIF1','TROVE2','MBD4',' GAB1']

BECN1 = ['LMNA','NHP2L1','IDS','ATP6V0B','ENSA','TBCB','NDUFA13','TOLLIP','PLEKHB2', 'MBOAT7','C16orf13','PGAM1','MIF','ACTR1A','OAZ1','GNAS','ARF1','MAPKAPK3','LCMT1','ATP6V1D','FLOT1','PRR13 ','COX5B','PGP','CYB561','CNIH4','COX6B1','NDUFB2','PFDN2','GPR172A','RTN4','GAPDH','MAPK13','FKBP8' 'PTGER3','BSCL2','TUBG1','FAM162A','GDI1','SPTLC2','YWHAZ','BCAP31','OSBPL1A','ATP6AP1','CALM1','PEX16','MYCBP2 ']

AR NTL = ['NCAM1','SLC11A2','RPL35A','PDLIM5','RPL31','NFIB','GYG2','IGHG1','NAAA','DLC1','EPOR','DIO2' ,ESR1,KLK10,CYP2C9,SPN,RPS9,PRELP,CYP3A43,PLAGL1,COBLL1] pre>

我有一个函数可以将这些列表与一个引用列表进行比较,这会产生ref和每个剩余列表之间匹配的数目。

  def sort_by_matches(ref,lists):
reference = set(ref)
lists = sorted([[len(reference,交集(set(l))),name,l]为名字,l在列表中],key = lambda x:(x [0],-len(x [2])),reverse = True)
对于列表中的匹配,名称,a_list:
print(匹配{},格式(匹配,名称))

每一次,我改变 ref ,我必须复制粘贴下面的长代码。

  sort_by_matches(APP,[(ABCC8,ABCC8),(APP,APP), (BECN1,BECN1),(ARNTL,ARNTL),(BMI1,BMI1),(CASP8,CASP8),(CASP9,CASP9), (CRTC,CTCF),(DNMT1,DNMT1),(EP300,EP300),(FBXW7,CRAT2) ,FBXW7,FOXA1,FOXA1,FOXO1,FOXO1,FOXO3,FOXO3,GADD,GAT,GCK,GCK ),(GLI1,GLI1),(GLP1,GLP1),(GLP1R,GLP1R),(GLUT1,GLUT1),(GLUT2,GLUT2),(HES1 (HIF1A,HIF1A),(HNF,HNF),(HNF33,HNF33),(ICM33,ICM33),(ID11,ID11) (IL44,IL44),(IL65,IL56),(LC44,LC44),(LYL2,LYL2),(MFSD,MFSD)])

如何以非常短的格式调用函数?

解决方案

  list_of_tuples = (ARNTL,ARNTL),(BMI1,BMI1),(CASP8,CASP8),(CASP9,CASP9),(CLOCK,CLOCK),(CRAT CRY2,CRY2),(CSF1,CSF1),(CTCF,CTCF),(DNMT1,DNMT1), (FOXO1,FOXO1),(FOXO3,FOXO3),(GADD,GADD),(GAT ,GAT),(GCK,GCK),(GLI1,GLI1),(GLP1,GLP1),(GLP1R,GLP1R),(GLUT1,GLUT1) ),(HIF1,HES1),(HEY1,HEY1),(HIF1A,HIF1A),(HNF,HNF),(HNF33,HNF33) (ID11,ID11),(IDHA11,IDHA11),(IL44,IL44),(IL65,IL56),(LC44 MFSD)]))

sort_by_matches(APP,list_of_tuples)


I have hundreds of lists such as :

ABCC8 = ['TRIM29', 'IGL@', 'DOCK6', 'SVEP1', 'S100A11', 'EPHA2', 'KLHL7', 'ANXA3', 'NAB1', 'CELF2', 'EDNRB', 'PLAGL1', 'IL6ST', 'S100A8', 'CKLF', 'TIPARP', 'CDH3', 'MAP3K8', 'LYST', 'LEPR', 'FHL2', 'ARL4C', 'IL1RN', 'ESR1', 'CD93', 'ATP2B4', 'KAT2B', 'ELOVL5', 'SCD', 'SPTBN1', 'AKAP13', 'LDLR', 'ADRB2', 'LTBP4', 'TGM2', 'TIMP3', 'RAN', 'LAMA3', 'ASPH', 'ID4', 'STX11', 'CNN2', 'EGR1']

APP = ['GULP1', 'PREPL', 'FHL1', 'METTL7A', 'TRIM13', 'YPEL5', 'PTEN', 'FAM190B', 'GSN', 'UBL3', 'PTGER3', 'COBLL1', 'EPB41L3', 'KLF4', 'BCL2L2', 'CYLD', 'SLK', 'ENSA', 'SKAP2', 'NR3C2', 'MAF', 'NDEL1', 'EZR', 'PCDH9', 'KIAA0494', 'CITED2', 'MGEA5', 'RUFY3', 'ALDH3A2', 'N4BP2L2', 'EPS15', 'TSPAN5', 'SNRPN', 'SSBP2', 'ELOVL5', 'C5orf4', 'FOXN3', 'ABCA5', 'SEC62', 'PELI1', 'MYCBP2', 'USP15', 'TACC1', 'SHMT1', 'RNF103', 'CDC14B', 'SYNE1', 'NDN', 'PHKB', 'EIF1', 'TROVE2', 'MBD4', 'GAB1']

BECN1 = ['LMNA', 'NHP2L1', 'IDS', 'ATP6V0B', 'ENSA', 'TBCB', 'NDUFA13', 'TOLLIP', 'PLEKHB2', 'MBOAT7', 'C16orf13', 'PGAM1', 'MIF', 'ACTR1A', 'OAZ1', 'GNAS', 'ARF1', 'MAPKAPK3', 'LCMT1', 'ATP6V1D', 'FLOT1', 'PRR13', 'COX5B', 'PGP', 'CYB561', 'CNIH4', 'COX6B1', 'NDUFB2', 'PFDN2', 'GPR172A', 'RTN4', 'GAPDH', 'MAPK13', 'FKBP8', 'PTGER3', 'BSCL2', 'TUBG1', 'FAM162A', 'GDI1', 'SPTLC2', 'YWHAZ', 'BCAP31', 'OSBPL1A', 'ATP6AP1', 'CALM1', 'PEX16', 'MYCBP2']

ARNTL = ['NCAM1', 'SLC11A2', 'RPL35A', 'PDLIM5', 'RPL31', 'NFIB', 'GYG2', 'IGHG1', 'NAAA', 'DLC1', 'EPOR', 'DIO2', 'ESR1', 'KLK10', 'CYP2C9', 'SPN', 'RPS9', 'PRELP', 'CYP3A43', 'PLAGL1', 'COBLL1']

I have a function to compare these lists with one reference list, which produces the number of matching between ref and each of the remaining lists.

def sort_by_matches(ref, lists):
    reference = set(ref)
    lists = sorted([[len(reference.intersection(set(l))), name, l] for name, l in lists], key=lambda x: (x[0], -len(x[2])), reverse=True)
    for matches, name, a_list in lists:
        print("Matches {} in {}".format(matches, name))

Every time, I change the ref, I have to copy paste the below long code.

sort_by_matches(APP, [("ABCC8", ABCC8), ("APP", APP), ("BECN1", BECN1), ("ARNTL", ARNTL), ("BMI1", BMI1), ("CASP8", CASP8), ("CASP9", CASP9), ("CLOCK", CLOCK), ("CRAT", CRAT), ("CRY2", CRY2), ("CSF1", CSF1), ("CTCF", CTCF), ("DNMT1", DNMT1), ("EP300", EP300), ("FBXW7", FBXW7), ("FOXA1", FOXA1), ("FOXO1", FOXO1), ("FOXO3", FOXO3), ("GADD", GADD), ("GAT", GAT), ("GCK", GCK), ("GLI1", GLI1), ("GLP1", GLP1), ("GLP1R", GLP1R), ("GLUT1", GLUT1),("GLUT2", GLUT2),("HES1", HES1),("HEY1", HEY1),("HIF1A", HIF1A),("HNF", HNF),("HNF33", HNF33),("ICM33", ICM33),("ID11", ID11),("IDHA11", IDHA11),("IL44", IL44),("IL65", IL56),("LC44", LC44),("LYL2", LYL2),("MFSD", MFSD)])

How can I call the function in a very short form?

解决方案

list_of_tuples = ([("ABCC8", ABCC8), ("APP", APP), ("BECN1", BECN1), ("ARNTL", ARNTL), ("BMI1", BMI1), ("CASP8", CASP8), ("CASP9", CASP9), ("CLOCK", CLOCK), ("CRAT", CRAT), ("CRY2", CRY2), ("CSF1", CSF1), ("CTCF", CTCF), ("DNMT1", DNMT1), ("EP300", EP300), ("FBXW7", FBXW7), ("FOXA1", FOXA1), ("FOXO1", FOXO1), ("FOXO3", FOXO3), ("GADD", GADD), ("GAT", GAT), ("GCK", GCK), ("GLI1", GLI1), ("GLP1", GLP1), ("GLP1R", GLP1R), ("GLUT1", GLUT1),("GLUT2", GLUT2),("HES1", HES1),("HEY1", HEY1),("HIF1A", HIF1A),("HNF", HNF),("HNF33", HNF33),("ICM33", ICM33),("ID11", ID11),("IDHA11", IDHA11),("IL44", IL44),("IL65", IL56),("LC44", LC44),("LYL2", LYL2),("MFSD", MFSD)])

sort_by_matches(APP, list_of_tuples)

这篇关于Python:如何以简短形式调用包含数百个列表的长函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆