如何通过Python的itertools模块使用product函数高效生成多个列表的笛卡尔积?

2026-04-30 13:011阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计768个文字,预计阅读时间需要4分钟。

如何通过Python的itertools模块使用product函数高效生成多个列表的笛卡尔积?

pythonimport itertools

itertools.product 生成多个可迭代对象的笛卡尔积返回一个生成器,每个元素是元组形式的组合示例:

  • 最简用法:list(product([1, 2], ['a', 'b']))[(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')]
  • 多个序列支持任意数量参数:product([1, 2], ['x'], [True, False])
  • 单个序列重复使用需显式传入 repeat 参数:product('ab', repeat=3) 等价于 product('ab', 'ab', 'ab')

常见错误:把列表当单个参数传入导致嵌套

写成 product([[1, 2], ['a', 'b']]) 会把整个列表当作一个可迭代对象,结果只有一项:([[1, 2], ['a', 'b']],) —— 这不是笛卡尔积,是“包了一层”。

阅读全文
标签:Python

本文共计768个文字,预计阅读时间需要4分钟。

如何通过Python的itertools模块使用product函数高效生成多个列表的笛卡尔积?

pythonimport itertools

itertools.product 生成多个可迭代对象的笛卡尔积返回一个生成器,每个元素是元组形式的组合示例:

  • 最简用法:list(product([1, 2], ['a', 'b']))[(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')]
  • 多个序列支持任意数量参数:product([1, 2], ['x'], [True, False])
  • 单个序列重复使用需显式传入 repeat 参数:product('ab', repeat=3) 等价于 product('ab', 'ab', 'ab')

常见错误:把列表当单个参数传入导致嵌套

写成 product([[1, 2], ['a', 'b']]) 会把整个列表当作一个可迭代对象,结果只有一项:([[1, 2], ['a', 'b']],) —— 这不是笛卡尔积,是“包了一层”。

阅读全文
标签:Python