双重列表理解

时间:2012-09-12 20:11:01

标签: python list-comprehension

是否有一种简单的方法可以理解以下内容

words = ["x", "mouse", "looloo", "google", "foo"]
terms = set()
for i in xrange(len(words)):
    terms = terms.union([" ".join(words[j:j + len(words) - i]) for j in xrange(len(words))])
return sorted(terms, key=len, reverse=True)

1 个答案:

答案 0 :(得分:3)

您可以在列表推导中放置多个循环,方法是按照与使用嵌套for循环时相同的顺序列出它们。

类似的东西:

terms = set([" ".join(words[j:j + len(words) - i])
               for i in xrange(len(words)) for j in xrange(len(words))])

但我觉得你的算法很难读懂,所以我甚至不确定这会做你想要的。