如何将以下内容放在if语句的一行中?
for g_id in gene_ids:
# start one liner from here onward
if g_id in actual_isoforms:
pairs = [tup for tup in actual_isoforms[g_id]]
for p in pairs:
if p == (t_id, str(num)):
iso_id = p[0]
iso_num = p[1]
total = check_exon_num[iso_id]
我已经尝试过了,但是它说“ tup”没有定义:
if (g_id in actual_isoforms) and [p == (t_id, str(num)) for p in tup for tup in actual_isoforms[g_id]]:
actual_isoforms
也是一本包含元组列表的字典。因此,“对”是列表值,p
是该列表中的每个元组。
答案 0 :(得分:0)
假设您的NSData
没有分配:
### STUFF
这是您尝试尝试列表理解时出错的地方:
if g_id in actual_isoforms:
result = [### STUFF for tup in actual_isoforms[g_id] if tup == (t_id, str(num))]
扩展循环中的 for p in tup for tup in actual_isoforms[g_id]
和p
指的是相同。据我所知,只有一个循环。
答案 1 :(得分:0)
pairs = [tup for tup in actual_isoforms[g_id] if tup == (t_id, str(num))]
因此,您可以对常规列表进行理解,并附加一些if condition_expression
。因此,您得到[x for x in iterable if condition_expression]
,其中condition_expression
决定元素是否应包含在结果列表中。