2012-04-08 54 views
1

我使用生成器來創建小號發生器對象到製表符分隔的文本

s= generator(n) 

發電機yeilds(A,B),用於在一個範圍(N)N。其中a = [W,X]和b = [Y,Z]

印刷S使用

for i in s: 
    print i 

此返回:

([0.27704232355167768, 0.44459304959240675], [0.4387731877846518, 0.38108111684466683]) 
([0.27704232355167768, 0.44459304959240675], [0.6362447250743466, 0.72047209074359853]) 
([0.27704232355167768, 0.44459304959240675], [0.65419386891877318, 0.025362727486327286]) 
([0.27704232355167768, 0.44459304959240675], [0.039966264334369672, 0.9662795347591735]) 

但是我想

0.27704232355167768 0.44459304959240675 0.4387731877846518 0.38108111684466683 
0.27704232355167768 0.44459304959240675 0.6362447250743466 0.72047209074359853 
0.27704232355167768 0.44459304959240675 0.65419386891877318 0.025362727486327286 
0.27704232355167768 0.44459304959240675 0.039966264334369672 0.9662795347591735 

我已經嘗試了以下想法的許多變體

print '\n'.join('\t'.join(x) for x in s) 

但是無效並傾向於以相同的格式返回s。任何人都可以幫我解決這個問題嗎?

+0

那麼什麼是'S'? 'S'看起來不像你發佈的內容,因爲沒有逗號分隔單獨的實體。每一行都是獨立的發生器? – 2012-04-08 16:35:53

+0

請[編輯]您的問題併發佈一個工作示例,以便我們可以真正幫助您。否則,我們的答案只會是猜測。 – 2012-04-08 16:37:32

+0

謝謝你們喬爾做的編輯幫助你更好地理解格式? @Rik我使用多個發生器befpore我得到這部分,所以沒有進入這個爲簡單起見,也許我嘲笑的例子將幫助 – user1320502 2012-04-08 16:46:09

回答

1
from itertools import chain 
'\n'.join('\t'.join(map(str,tuple(chain(*i)))) for i in s) 

chain使每一行變平,所以你可以將所有元素連接到一個標籤,然後用換行連接行。

+0

嗯,我試圖寫這個文本文件。所以我也一直在嘗試你的代碼Marcin謝謝你。但它表示找到了字符串預期列表。 – user1320502 2012-04-08 17:17:51

+0

我認爲這是缺乏地圖的beacuae? – user1320502 2012-04-08 17:38:02

+0

@ user1320502是的,需要映射到str。 – Marcin 2012-04-08 18:57:20

0

不知道你發生的樣子,但是看着你的例子,如果你的發電機是如下

>>> def generator(n): 
    for i in xrange(0,n): 
     yield ([0.27704232355167768, 0.44459304959240675], [0.4387731877846518, 0.38108111684466683]) 
    return 

那麼你可以像

>>> s=generator(5) 
>>> print '\n'.join('\t'.join(map(str,x)) for x in s) 
[0.2770423235516777, 0.44459304959240675] [0.4387731877846518, 0.38108111684466683] 
[0.2770423235516777, 0.44459304959240675] [0.4387731877846518, 0.38108111684466683] 
[0.2770423235516777, 0.44459304959240675] [0.4387731877846518, 0.38108111684466683] 
[0.2770423235516777, 0.44459304959240675] [0.4387731877846518, 0.38108111684466683] 
[0.2770423235516777, 0.44459304959240675] [0.4387731877846518, 0.38108111684466683] 
>>> 
+0

我不認爲他想要圍繞它或逗號的方括號... – jamylak 2012-04-08 16:49:13

+0

謝謝Abhijit我不想要括號,但這可能是有用的格式在某些時候將來。 – user1320502 2012-04-08 16:53:43

1
>>> from itertools import chain 
>>> for i in s: 
     print '\t'.join(map(str,chain(*i))) 


0.277042323552 0.444593049592 0.438773187785 0.381081116845 
0.277042323552 0.444593049592 0.636244725074 0.720472090744 
0.277042323552 0.444593049592 0.654193868919 0.0253627274863 
0.277042323552 0.444593049592 0.0399662643344 0.966279534759 
+0

非常感謝你,我之前嘗試過地圖,並失敗 – user1320502 2012-04-08 16:51:23

+0

啊好吧,很高興它的作品。 – jamylak 2012-04-08 16:51:47

相關問題