列表推导中变量范围的更轻松格式化

2024-06-24 11:56:37 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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的所有可能的组合进行求和。我的直觉是对的,还是我一直盯着那条丑陋的长线?你知道吗


Tags: in功能列表for字母方式rangefunction
1条回答
网友
1楼 · 发布于 2024-06-24 11:56:37

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

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

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

相关问题 更多 >