python - 如何创建一个由 2 个不同列表元素组合而成的新列表而不重复?
问题描述
我正在尝试创建一个有 2 个刺激的画布。请注意,刺激列表可以更长。
sti1 = ["death", "pain"]
sti2 = ["glass", "book"]
这些刺激将显示如下:
第 1 帧:死亡 - 书 / 第 2 帧:玻璃 - 痛苦
但他们必须正确洗牌。我的意思是,如果有“死亡 x 书”的组合,就不能再有另一个了。此外,必须显示所有组合。此外,所有帧必须包含一个来自 sti1 的单词和一个来自 sti2 的单词。
这是我的想法:
创建一个包含所有组合的组合列表。
使用 for 循环进行迭代。
如果除了创建组合列表并对其进行迭代之外,还有其他解决方案,我对新事物持开放态度。
我试过: random.choice itertools.permutations itertools.combinations (最接近的答案,但这只能结合 1 个列表,如 sti1)
预期结果:combination_list = [(death, glass), (death, book), (pain, glass), (pain, book)]
解决方案
为此你想要itertools.product
:
from itertools import product
list(product(sti1,sti2))
[('death', 'glass'), ('death', 'book'), ('pain', 'glass'), ('pain', 'book')]
推荐阅读
- javascript - 使用 Javascript 从浏览器调用 AWS Lambda,如何将输入值发送到函数?
- javascript - 使用图像作为超链接并保存文本框输入值?
- tensorflow - 在 GPU 上运行 CNN 时,用于深度强化学习的 CPU 模拟会导致延迟问题
- c++ - 如何在数组列表 C++ 中来回移动?
- variables - 詹金斯在窗户上。声明性管道 jenkinsfile。如何设置和获取正确的变量值
- excel - 应用程序等待时间问题
- reactjs - MobX + 反应。有人可以展示一些真正有用的自动运行、拦截器和观察案例吗?
- java - 多线程环境初始化前读取非最终字段的代码演示
- azure-web-app-service - 发布更改后强制重新加载 Blazor 客户端
- google-sheets - 两次使用过滤器公式的结果