1

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

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 的所有可能组合。我的直觉是正确的,还是我一直盯着那条又长又丑的线?

4

1 回答 1

0

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

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

starmap返回一个迭代器(就像 Python 3 一样map),因此您可能希望将此表达式包装在一个列表中,此时 DSM 的答案可能更具可读性。

于 2013-08-31T21:58:51.790 回答