当前位置: 首页 > 面试题库 >

如何将itertools.product应用于列表列表的元素?

孙翰墨
2023-03-14
问题内容

我有一个数组列表,我想获取数组中元素的笛卡尔积。

我将使用一个示例来使其更加具体…

itertools.product似乎可以解决问题,但我只保留了一些细节。

arrays = [(-1,+1), (-2,+2), (-3,+3)];

如果我做

cp = list(itertools.product(arrays));

我懂了

cp = cp0 = [((-1, 1),), ((-2, 2),), ((-3, 3),)]

但是我想要得到的是

cp1 = [(-1,-2,-3), (-1,-2,+3), (-1,+2,-3), (-1,+2,+3), ..., (+1,+2,-3), (+1,+2,+3)].

我尝试了几种不同的方法:

cp = list(itertools.product(itertools.islice(arrays, len(arrays))));
cp = list(itertools.product(iter(arrays, len(arrays))));

他们都让我 CP0 代替 CP1

有任何想法吗?

提前致谢。


问题答案:
>>> list(itertools.product(*arrays))
[(-1, -2, -3), (-1, -2, 3), (-1, 2, -3), (-1, 2, 3), (1, -2, -3), (1, -2, 3), (1, 2, -3), (1, 2, 3)]

这会将所有对作为单独的参数提供给product,然后为您提供它们的笛卡尔积。

您的版本无法正常运行的原因是您仅给出product了一个参数。索要一个列表的笛卡尔积是一个简单的情况,它返回一个仅包含一个元素的列表(该列表作为参数给出)。



 类似资料:
  • 问题内容: 如何将函数应用于变量输入列表?例如,函数返回真值,但不返回函数的实际输出。 预期的输出是: 我知道是内置的。这只是一个例子。 问题答案: 我认为您的意思是使用而不是: 更简单的是,您可以使用而不是从中导入(感谢@alecxe): 在Python 2.x中,通过将给定函数应用于列表中的每个元素来构造新列表。通过限制使用给定函数求值的元素来构造新列表。 在Python 3.x中,和构建迭代

  • 问题内容: 我是Python的新手,需要将列表转换为字典。我知道我们可以将元组列表转换为字典。 这是输入列表: 并且我想将此列表转换为元组列表(或直接转换为字典),如下所示: 我们如何在Python中轻松做到这一点? 问题答案: 您想一次将三个项目分组吗? 您想一次分组N个项目吗?

  • 问题内容: 可以说我有一个这样的列表: 我有一个函数,假设我想将该函数应用于该函数的每个子列表,可以计算出有关两个列表的一些分数。如何将此功能应用于的每个列表并在新列表中返回每个分数,如下所示: 我尝试使用以下功能: 问题答案: 您可以使用内置函数来执行此操作。 因此,如果您要应用的函数是,则可以执行以下操作: 在中,上面返回了一个地图迭代器,因此您需要一个显式调用: 如果您要为此编写一些必须在P

  • 问题内容: 实现以下目标的Python方法是什么? 的每个成员都是一个元组,其第一个成员是,第二个成员是。 问题答案: 在Python 2中:

  • 问题内容: 给定以下元组列表: 我如何将其拼凑成列表? 有没有一线做上面的事情? 问题答案: 您可以使用列表推导: 在以下情况下也经常使用: 但是,这并不是完全一样的。

  • 问题内容: 我已经编写了此函数,用于将元组列表转换为列表列表。有没有更优雅的/ Pythonic的方式来做到这一点? 问题答案: 您可以使用列表推导: