2011-08-02 86 views
0

我有一些文本操作的事,這裏有一個for循環做的:Python列表理解的煩惱

for p in paras[:]: 

    pidx = paras.index(p) 

    for sent in p: 
     sidx = p.index(sent) 

     sent = ' '.join(w[0] for w in sent) 
     paras[pidx][sidx] = sent 

    paras[pidx] = 'start' + ' '.join(paras[pidx]) + 'end' 

這裏是我的列表理解:

[' '.join(w[0] for w in sent) for p in paras for sent in p] 

這將返回句子中的一個大名單我需要基於段落(p)的單獨列表或者有某種方式來表示每個段落結束的位置。有沒有一些性感的方式來做到這一點?

+1

示例輸入和輸出將有巨大的幫助。 –

+2

只是一個建議:'對於pidx,列舉中的p(para [:]):'和'對於sidx,發送枚舉(p):' –

回答

2

嵌套LC

[[' '.join(w[0] for w in sent) for sent in p] for p in paras] 

應該給每一對作爲一個單獨的列表

+0

謝謝,我很難用這些可視化變換。 – gEr

1

如果一個句子是單詞的列表,然後:

["see", "spot", "run"] 

是一個句子。如果一個段落是句子列表,則:

[ ["see", "spot", "run"], ["see", "dick", "run"], ["see" "dick", "run", "after", "spot"] ] 

是段落。你只需要建立一個單詞列表而不是單詞列表。