我正在尝试了解互联网上提供的代码
但我是python的新手,无法获得这行代码:
score = sum([-sigma if '-' in pair else scoring_matrix[pair] for pair in zip(v_aligned, w_aligned)])
我知道方法总和,作为单独的方法 但我不明白括号内发生了什么
v_aligned,w_aligned是两个对齐的字符串,例如,如果v = PLEASANTLY且w = MEANLY
v_aligned = LEASNT-LY w_aligned = MEA-N-LY -
scoring_matrix是BLOSUM62
差= 5
答案 0 :(得分:0)
让我们先谈谈你表达中的那个拉链 它会将你的两个变量中的值“配对”,这意味着它将返回一个zip对象,如果你迭代,将返回这样的('L','M'),('E','E'),( 'A','A'),('S',' - ')等等。 你可以看到它通过你的'单词'的字母,并将第一个单词中的一个字母与第二个单词中的另一个'字符'匹配。
for循环将逐步遍历通过该zip对象提供的每个元组,pair
引用当前元组。
不,我们有-sigm if '-' in pair else scoring_matrix[pair]
这很简单 - 这是一个条件:如果' - '在当前对中,那么让我们拿('L','M'),然后把-sigma放在这个表中,如果不是,那么将scrring_matrix [pair]的结果放在那里。你可以看到' - '不在('L','M')所以它会把scoring_matrix [pair]放在那里。