在列表推导中更容易格式化变量范围

时间:2013-01-30 18:59:20

标签: python python-3.x list-comprehension

如果我有一个列表理解基本上是这样的:

result = [function(i,j,k,l) for i in range(3) for j in range(3)
    for k in range(3) for l in range(3)]

它做我想要的,但它看起来很难看。我对Python很陌生,但似乎Python会有某种内置功能,允许我以一种不那么繁琐的方式总结4个字母ijkl的所有可能组合。我的直觉是正确的,还是我被困在那条长长的丑陋线上?

1 个答案:

答案 0 :(得分:0)

因为没有人想出这个副本,所以这是我的答案,只是为了记录(尽管DSM已经在评论中给出了一个很好的答案,他也使用了itertools.product,这就是解决方案的核心):

result = itertools.starmap(function, itertools.product(range(3), repeat=4))

starmap返回一个迭代器(就像Python 3的map一样),所以你可能希望将这个表达式包装在一个列表中,那时DSM的答案可能更具可读性。 / p>