-1

我写了这段代码

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(或 can be )的出现次数。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'我将获得的段数(列表中的每个单独元素,如在输出文件中。另外,由于我是 python(和编程)的新手,所以我不太擅长使用函数。

4

2 回答 2

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
于 2013-01-22T17:32:32.867 回答
0

你可以试试mappython中的函数。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 本身是一个列表,那应该不是问题,只要您相应地使用它即可。

这回答了你的问题了吗?

于 2013-01-22T17:44:00.143 回答