我正在使用Python來分析大文件。我想要做的是Python生成器表達式if-else
If condition =True
append to list A
else
append to list B
我想爲此使用生成器表達式 - 以節省內存。我正在輸入實際的代碼。
def is_low_qual(read):
lowqual_bp=(bq for bq in phred_quals(read) if bq < qual_threshold)
if iter_length(lowqual_bp) > num_allowed:
return True
else:
return False
lowqual=(read for read in SeqIO.parse(r_file,"fastq") if is_low_qual(read)==True)
highqual=(read for read in SeqIO.parse(r_file,"fastq") if is_low_qual(read)==False)
SeqIO.write(highqual,flt_out_handle,"fastq")
SeqIO.write(lowqual,junk_out_handle,"fastq")
def iter_length(the_gen):
return sum(1 for i in the_gen)
作爲一個方面說明,不要與真/假比較。使用'if is_condition_true(r)'和'if is not_condition_true(r)'。 – delnan
delnan是對的,其他的東西都可以。 – MostafaR
這看起來很好。這是否失敗?這就是你問的原因嗎? – inspectorG4dget