首页 > 解决方案 > 如何创建一个由 2 个不同列表元素组合而成的新列表而不重复?

问题描述

我正在尝试创建一个有 2 个刺激的画布。请注意,刺激列表可以更长。

sti1 = ["death", "pain"]
sti2 = ["glass", "book"]

这些刺激将显示如下:

第 1 帧:死亡 - 书 / 第 2 帧:玻璃 - 痛苦

但他们必须正确洗牌。我的意思是,如果有“死亡 x 书”的组合,就不能再有另一个了。此外,必须显示所有组合。此外,所有帧必须包含一个来自 sti1 的单词和一个来自 sti2 的单词。

这是我的想法:

  1. 创建一个包含所有组合的组合列表。

  2. 使用 for 循环进行迭代。

如果除了创建组合列表并对其进行迭代之外,还有其他解决方案,我对新事物持开放态度。

我试过: random.choice itertools.permutations itertools.combinations (最接近的答案,但这只能结合 1 个列表,如 sti1)

预期结果:combination_list = [(death, glass), (death, book), (pain, glass), (pain, book)]

标签: pythonrandomiterationcombinations

解决方案


为此你想要itertools.product

from itertools import product
list(product(sti1,sti2))
[('death', 'glass'), ('death', 'book'), ('pain', 'glass'), ('pain', 'book')]

推荐阅读