我写了这段代码
import sys
file = open(sys.argv[1], 'r')
string = ''
for line in file:
if line.startswith(">"):
pass
else:
string = string + line.strip()
#print (list(string))
w = input("Please enter window size:")
test = [string[i:i+w] for i in range (0,len(string),w)]
seq = input("Please enter the number of sequences you wish to read:")
#print (test[0:seq])
它会生成一个如下所示的列表 -
['TAAAACACCC', 'TCAATTCAAG', 'GGTTTTTGAG', 'CGAGCTTTTT', 'ACTCAAAGAA', 'TCCAAGATAG', 'CGTTTAAAAA', 'TTTAGGGGTG', 'TTAGGCTCAG', 'CATAGAGTTT']
现在,下一步是在列表的每个元素中读取字母GC
(或可以是CG
)的出现。有没有办法以输出文件如下所示的方式遍历列表:
Segment 1- The %GC is <the calculated number>
Segment 2- The %GC is <the calculated number>
Segment 3- The %GC is <the calculated number>
由于文件很大而且段数(列表中的每个单独元素,如'TAAGATATA'
)我将会变得很大,我不知道如何得到这个数字(1,2, 3 ...)输出文件中的段。因为我是python(和编程)的新手,所以我不太擅长使用函数。
答案 0 :(得分:1)
我不确定你在问什么。
inp = ['TAAAACACCC', 'TCAATTCAAG', 'GGTTTTTGAG', 'CGAGCTTTTT', 'ACTCAAAGAA', 'TCCAAGATAG', 'CGTTTAAAAA', 'TTTAGGGGTG', 'TTAGGCTCAG', 'CATAGAGTTT']
for i, segment in enumerate(inp):
print "Segment {} - The %GC is {}".format(i, segment.count("GC"))
给出
Segment 0 - The %GC is 0
Segment 1 - The %GC is 0
Segment 2 - The %GC is 0
Segment 3 - The %GC is 1
Segment 4 - The %GC is 0
Segment 5 - The %GC is 0
Segment 6 - The %GC is 0
Segment 7 - The %GC is 0
Segment 8 - The %GC is 1
Segment 9 - The %GC is 0
答案 1 :(得分:0)
您可以在python中尝试map
函数。 http://docs.python.org/3.1/library/functions.html#map提供了它的一般用法,但这是一个使用Python3的例子。
def func1(myObject):
'''Trivial example function'''
return myObject * 2
myList = [1,2,3]
myMap = map(func1,myList)
print(list(myMap))
Map在可迭代的每个项目上执行一个方法(例如列表,字符串等),并将每个方法执行的结果放入一个映射中,然后可以将其作为列表打印出来或像列表一样迭代。
如果你想让你的myObject成为一个列表本身,这应该不是问题,只要你这样使用它就好了。
这会回答你的问题吗?