计算列表的笛卡尔积
从多个列表中获取笛卡尔积或所有可能的值组合提出了一个常见的挑战编程。考虑列表列表的示例:
somelists = [ [1, 2, 3], ['a', 'b'], [4, 5] ]
理想输出:
我们寻求的结果是一个列表,其中包含来自输入列表:
[(1, 'a', 4), (1, 'a', 5), (1, 'b', 4), (1, 'b', 5), (2, 'a', 4), (2, 'a', 5), ...]
Pythonic 解决方案: itertools.product
Python 标准库为这项任务提供了一个强大的工具:itertools.product。自 Python 2.6 起,此函数需要输入序列作为单独的参数。
import itertools for element in itertools.product(*somelists): print(element)
或者,您可以显式指定每个序列作为参数:
for element in itertools.product([1, 2, 3], ['a', 'b'], [4, 5]): print(element)
itertools.product 将返回一个生成器对象,它将每个组合生成为一个元组。要获得所需的列表,您可以迭代生成器并将每个元组转换为列表(如果需要)。
通过利用 itertools.product,您可以有效地计算多个列表的笛卡尔积,从而避免嵌套的需要循环并确保针对这一常见编程挑战提供简洁且可读的解决方案。
以上是如何在Python中高效计算列表的笛卡尔积?的详细内容。更多信息请关注PHP中文网其他相关文章!