2011-08-02 79 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"] ] 

是段落。你只需要建立一个单词列表而不是单词列表。