我有一个包含三个内容的标题数组。我的程序遍历标题的所有组合,并查看它们是并发还是不并发。
当我运行程序时,我希望它打印哪两个头是并发的,哪些不是并发的。所以基本上在打印时,而不是打印sequences are concurrent
/ sequences are not concurrent
,我希望它说header a is concurrent to header b
和header b is not concurrent to header c
等。
这是我的计划:
c=combinations(header,2)
for p in combinations(sequence,2):
if p[0][start:stop]==p[1][start:stop]:
print header[p[0],p[1]], "are concurrent"
else:
print header[p[0],p[1]], "are not concurrent"
print list(c)
我知道问题是第四和第六行。请帮忙。使用此代码,我得到TypeError: list indices must be integers, not tuple.
有人要求我的标题和序列的例子...... 我的标题如下: ('> DQB1','> OMIXON','> GENDX')
我的序列如下: ('GACTAAAAAGCTA','GACTAAAAAGCTA','GAAAACTGGGGGA')
答案 0 :(得分:2)
您希望将两个列表合并为一个:
for (h1, s1), (h2, s2) in combinations(zip(header, sequence), 2):
if s1[start:stop] == s2[start:stop]:
print h1, h2, "are concurrent"
else:
print h1, h2, "are not concurrent"
或减少重复代码:
for (h1, s1), (h2, s2) in combinations(zip(header, sequence), 2):
concurrent = s1[start:stop] == s2[start:stop]
print "{} and {} are{} concurrent".format(h1, h2, "" if concurrent else " not")
答案 1 :(得分:0)
在 Python 中格式化字符串的最佳方法是这样的:
"{} and {} are concurrent".format(header[p[0]],header[p[1]])
也可以使用多个占位符{}
。