2012-04-27 115 views
2

我在文件中有以下行。這裏是一個行的一個示例:快速基本循環

NM _ ???? chr12 - 10 110 10 110 3 10,50,100,20,60,110,

我有以下代碼來獲取信息了:

fp = open(infile, 'r') 
for line in fp: 
    tokens = line.split() 
    exonstarts = tokens[8][:-1].split(',') 
    exonends = tokens[9][:-1].split(',') 

這會給我這樣的一個列表:

exonstarts = [10,50,100] 
exonends = [20,60,110] 

這有3個外顯子(儘管在該文件的其他線可具有超過3個或更少,因此必須爲任何數量的外顯子的工作),他們從去:

10-20 
50-60 
100-110 

因此,對於開始列表中的每個數字,在完成列表中都有一個數字。 這意味着第一個密碼子在exonstarts [0]開始,在 exonends [0]結束。第二個在exonstarts [1]開始,在exonends [1]結束。 依此類推。

我怎樣寫這段代碼的其餘部分,以便它把元素配對這樣?


更新:

從這:

tokens = line.split() 
exonstarts = tokens[8][:-1].split(',') 
exonends = tokens[9][:-1].split(',') 
zipped = list(zip(exonstarts, exonends)) 

我還有一個問題,我有,我想這些作品的刺痛。因此,例如,我想chr_string[10:20]+chr_string[50:60]+chr_string[100:110]有沒有一種方法,我可以輕鬆地說這個?

+0

對不起,小白編程的問題。我真的很需要的時間緊迫,我發現自己在 – 2012-04-28 00:02:02

+5

不需要道歉帕特里克一些幫助,這就是網站是這裏:) – 2012-04-28 00:05:54

+1

@PatrickCampbell:一般情況下,它的首選,你打開一個新的問題,對於這樣的followups 。 – 2012-04-28 00:36:33

回答

2

我相信你想要的zip功能。

In [1]: exonstarts = [10,50,100] 

In [2]: exonends = [20,60,110] 

In [3]: zip(exonstarts, exonends) 
Out[3]: [(10, 20), (50, 60), (100, 110)] 
+0

是否內置zip函數?因爲當我嘗試使用zip(exonstarts,exonends)時,我得到的所有內容都是 2012-04-28 00:08:42

+0

除非您覆蓋它,否則zip函數是內置的。它在版本2.0中加入 – 2012-04-28 00:10:11

+0

它說它是內置的(我使用的是3.2.2),但它實際上不會這樣做... – 2012-04-28 00:11:39

3

zip內置的是你找什麼:

>>> exonstarts = [10,50,100] 
>>> exonends = [20,60,110] 
>>> zip(exonstarts,exonends) 
[(10, 20), (50, 60), (100, 110)] 
0

你可以使用zip()這些對:

>>> for t in zip(exonstarts, exonends): 
...  print('%d-%d' % t) 
... 
10-20 
50-60 
100-110 

通過切片chr_string要獲得list (我捏造的)使用這些對:

>>> [chr_string[start:end] for start,end in zip(exonstarts, exonends)] 
['0506070809', '2526272829', '5051525354'] 

攜起手來這些:

>>> ''.join(chr_string[start:end] for start,end in zip(exonstarts, exonends)) 
'050607080925262728295051525354' 
+0

所以,另一個問題,我有一個蜇,我想要這些片斷。因此,例如,我想要chr_string [10:20] + chr_string [50:60] + chr_string [100:110]有沒有一種方法,我可以輕鬆地說這個? – 2012-04-28 00:29:10

+0

@PatrickCampbell:如果你解釋你試圖解決的* actual *問題,這將有所幫助。另請參閱:http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem – Johnsyweb 2012-04-28 00:42:45