Python 程序使用 itertools.product 处理列表的列表中的元素


itertools 是 Python 标准库中的一个模块,它提供了一系列用于高效迭代和组合可迭代对象的工具,并且它是 Python 标准库的一部分,因此无需执行任何其他安装。它提供了各种功能,可用于以不同方式操作、组合和迭代可迭代对象。

itertools.product() 函数与itertools 模块相关,它是生成多个可迭代对象的笛卡尔积的强大工具。它接受一个或多个可迭代对象作为输入,并返回一个迭代器,该迭代器生成表示输入可迭代对象中所有可能元素组合的元组。

itertools.product 返回一个迭代器;换句话说,它在需要时动态生成元组。这在处理大型输入可迭代对象或组合数量巨大时非常节省内存。

语法

使用itertools.product() 函数的语法如下:

itertools.product(*iterables, repeat=1)

其中,

  • 可迭代对象是组合以生成笛卡尔积的一个或多个元素。

  • repeat 是一个整数值,指定输入可迭代对象中每个元素应重复的次数。

示例

在此示例中,我们使用itertools.product() 生成颜色和尺寸的所有可能组合。生成的迭代器 product 包含表示每个组合的元组,我们遍历它以打印每个元组。

import itertools
colors = ['red', 'green', 'blue']
sizes = ['S', 'M', 'L']
product = itertools.product(colors, sizes)
for item in product:
   print(item)

输出

('red', 'S')
('red', 'M')
('red', 'L')
('green', 'S')
('green', 'M')
('green', 'L')
('blue', 'S')
('blue', 'M')
('blue', 'L')

示例

在此示例中,我们尝试使用itertools.product() 函数计算字母和数字列表的笛卡尔积,然后生成的迭代器生成包含字母列表中一个元素和数字列表中一个元素的所有可能组合的元组。然后使用循环打印这些元组。

import itertools
letters = ['a', 'b']
numbers = [1, 2, 3]
result = itertools.product(letters, numbers)
for item in result:
   print(item)

输出

('a', 1)
('a', 2)
('a', 3)
('b', 1)
('b', 2)
('b', 3)

示例

在前面的示例中,我们计算了数字和字母的笛卡尔积,重复次数为一次。在此示例中,repeat 参数设置为 3,这会导致笛卡尔积重复三次,生成的迭代器生成包含数字列表中三个元素的所有可能组合(包括重复)的元组。

import itertools
letters = ['a', 'b']
numbers = [1, 2, 3]
result = itertools.product(letters, numbers, repeat = 2)
for item in result:
   print(item)

输出

('a', 1, 'a', 1)
('a', 1, 'a', 2)
('a', 1, 'a', 3)
('a', 1, 'b', 1)
('a', 1, 'b', 2)
('a', 1, 'b', 3)
('a', 2, 'a', 1)
('a', 2, 'a', 2)
('a', 2, 'a', 3)
('a', 2, 'b', 1)
('a', 2, 'b', 2)
('a', 2, 'b', 3)
('a', 3, 'a', 1)
('a', 3, 'a', 2)
('a', 3, 'a', 3)
('a', 3, 'b', 1)
('a', 3, 'b', 2)
('a', 3, 'b', 3)
('b', 1, 'a', 1)
('b', 1, 'a', 2)
('b', 1, 'a', 3)
('b', 1, 'b', 1)
('b', 1, 'b', 2)
('b', 1, 'b', 3)
('b', 2, 'a', 1)
('b', 2, 'a', 2)
('b', 2, 'a', 3)
('b', 2, 'b', 1)
('b', 2, 'b', 2)
('b', 2, 'b', 3)
('b', 3, 'a', 1)
('b', 3, 'a', 2)
('b', 3, 'a', 3)
('b', 3, 'b', 1)
('b', 3, 'b', 2)
('b', 3, 'b', 3)

更新于: 2023年8月2日

233 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.