在下面的列表中的數據:當列表值是字符串時如何在列表理解中使用else?
attri_values = ['gene_id "scaffold_200002.1"', 'gene_version "1"', 'transcript_id "scaffold_200002.1"', 'transcript_version "1"', 'exon_number "2"', 'gene_source "jgi"', 'gene_biotype "protein_coding"', 'transcript_source "jgi"', 'transcript_biotype "protein_coding"', 'exon_id "scaffold_200002.1.exon2"', 'exon_version "1"']
說我想申請一個條件表達式:
gene_id = [x for x in attri_values if 'gene_id' in x]
# But, when there is not list values with 'gene_id' I would like to return NA (string type) but not an empty list, but I am being unsuccessful
gene_name = [x if 'gene_name' in x else 'NA' for x in attri_values]
print(gene_name) #gives me
['NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA']
# I only want one 'NA' in string format.
我試着寫在不同的點別的條件。我也嘗試了stackE的幾個例子,但沒有成功。
if else in a list comprehension
if/else in Python's list comprehension?
感謝,
當您嘗試使用'else'時會出現什麼錯誤? –
你能不能把它轉換成'set'?像'gene_name = list(set([x if'gene_name'in x else'NA'for x in attri_values])' – roganjosh
我沒有收到我所嘗試的錯誤,但我也沒有得到確切的我想要的東西。,我也試過lambda。我可以運行for循環工作這個問題,但想學習一個非常好的和乾淨的方法來解決這個問題。我嘗試了幾個舊帖子的例子,迄今爲止沒有成功。 – everestial007