2024-06-24 11:56:37 发布
网友
如果我有一个基本上是这样的列表理解:
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的所有可能的组合进行求和。我的直觉是对的,还是我一直盯着那条丑陋的长线?你知道吗
因为没有人提出一个重复的答案,这里是我的答案,只是为了记录在案(尽管DSM在评论中已经给出了一个很好的答案,他也使用了itertools.product,这就是解决方案的核心):
itertools.product
result = itertools.starmap(function, itertools.product(range(3), repeat=4))
starmap返回一个迭代器(就像python3的map),因此您可能希望将这个表达式包装在一个列表中,此时DSM的答案可能更具可读性。你知道吗
starmap
map
因为没有人提出一个重复的答案,这里是我的答案,只是为了记录在案(尽管DSM在评论中已经给出了一个很好的答案,他也使用了
itertools.product
,这就是解决方案的核心):starmap
返回一个迭代器(就像python3的map
),因此您可能希望将这个表达式包装在一个列表中,此时DSM的答案可能更具可读性。你知道吗相关问题 更多 >
编程相关推荐