Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从两个阵列创建所有可能的组合_Python_Arrays_Iterable - Fatal编程技术网

Python 从两个阵列创建所有可能的组合

Python 从两个阵列创建所有可能的组合,python,arrays,iterable,Python,Arrays,Iterable,我正试图想出一种有效的方法来解决以下问题: 给定任意两个数组“a”和“b”,我想创建所有组合列表,每个组合应包含“a”中一个元素和“b”中一个元素的元组 例如: a = ['p', 'q'], b = [True, False] 输出应如下所示: [{'p': False, 'q': False}, {'p': False, 'q': True}, {'p': True, 'q': False}, {'p': True, 'q': True}] 嘿,你可以使用repeat=2 下面是一个构

我正试图想出一种有效的方法来解决以下问题:

给定任意两个数组“a”和“b”,我想创建所有组合列表,每个组合应包含“a”中一个元素和“b”中一个元素的元组

例如:

a = ['p', 'q'], b = [True, False]
输出应如下所示:

[{'p': False, 'q': False}, {'p': False, 'q': True}, {'p': True, 'q': 
False}, {'p': True, 'q': True}]
嘿,你可以使用
repeat=2

下面是一个构建字典列表的工作示例

[{k1:v1, k2:v2} for k1,v1,k2,v2 in itertools.product(a,b,repeat=2) if k1 != k2]
这就是你需要的吗

from itertools import product
lst = [dict(zip(a,pair)) for pair in product(b,b)]
输出:

[{'p': True, 'q': True},
 {'p': True, 'q': False},
 {'p': False, 'q': True},
 {'p': False, 'q': False}]
[{'p': True, 'q': False, 'r': False, 's': False, 't': False},
 {'p': True, 'q': False, 'r': True, 's': True, 't': False},
 {'p': False, 'q': False, 'r': False, 's': False, 't': True},
 {'p': True, 'q': False, 'r': True, 's': False, 't': False},
 {'p': False, 'q': False, 'r': True, 's': True, 't': True},
 {'p': True, 'q': False, 'r': False, 's': True, 't': False},
 {'p': False, 'q': False, 'r': False, 's': True, 't': True},
 {'p': False, 'q': False, 'r': True, 's': False, 't': True},
 {'p': False, 'q': True, 'r': False, 's': False, 't': False},
 {'p': False, 'q': True, 'r': True, 's': True, 't': False},
 {'p': False, 'q': True, 'r': False, 's': True, 't': False},
 {'p': False, 'q': True, 'r': True, 's': False, 't': False},
 {'p': True, 'q': True, 'r': True, 's': False, 't': False},
 {'p': True, 'q': True, 'r': False, 's': True, 't': False},
 {'p': True, 'q': True, 'r': False, 's': False, 't': False},
 {'p': True, 'q': True, 'r': False, 's': False, 't': True},
 {'p': True, 'q': False, 'r': False, 's': True, 't': True},
 {'p': True, 'q': False, 'r': True, 's': False, 't': True},
 {'p': False, 'q': False, 'r': False, 's': True, 't': False},
 {'p': False, 'q': False, 'r': True, 's': False, 't': False},
 {'p': True, 'q': False, 'r': False, 's': False, 't': True},
 {'p': False, 'q': False, 'r': False, 's': False, 't': False},
 {'p': False, 'q': False, 'r': True, 's': True, 't': False},
 {'p': False, 'q': True, 'r': False, 's': True, 't': True},
 {'p': False, 'q': True, 'r': True, 's': False, 't': True},
 {'p': True, 'q': True, 'r': True, 's': True, 't': True},
 {'p': False, 'q': True, 'r': False, 's': False, 't': True}]
编辑:

既然你说
a
可以是任意长度,那么你就不需要
b

from itertools import permutations
import numpy as np

a = ['p','q','r','s','t']
list1 = list(permuations(a))
set1 = {tuple(np.array(a) == np.array(i)) for i in list1}
final_list = [dict(zip(a,i)) for i in set1]
输出:

[{'p': True, 'q': True},
 {'p': True, 'q': False},
 {'p': False, 'q': True},
 {'p': False, 'q': False}]
[{'p': True, 'q': False, 'r': False, 's': False, 't': False},
 {'p': True, 'q': False, 'r': True, 's': True, 't': False},
 {'p': False, 'q': False, 'r': False, 's': False, 't': True},
 {'p': True, 'q': False, 'r': True, 's': False, 't': False},
 {'p': False, 'q': False, 'r': True, 's': True, 't': True},
 {'p': True, 'q': False, 'r': False, 's': True, 't': False},
 {'p': False, 'q': False, 'r': False, 's': True, 't': True},
 {'p': False, 'q': False, 'r': True, 's': False, 't': True},
 {'p': False, 'q': True, 'r': False, 's': False, 't': False},
 {'p': False, 'q': True, 'r': True, 's': True, 't': False},
 {'p': False, 'q': True, 'r': False, 's': True, 't': False},
 {'p': False, 'q': True, 'r': True, 's': False, 't': False},
 {'p': True, 'q': True, 'r': True, 's': False, 't': False},
 {'p': True, 'q': True, 'r': False, 's': True, 't': False},
 {'p': True, 'q': True, 'r': False, 's': False, 't': False},
 {'p': True, 'q': True, 'r': False, 's': False, 't': True},
 {'p': True, 'q': False, 'r': False, 's': True, 't': True},
 {'p': True, 'q': False, 'r': True, 's': False, 't': True},
 {'p': False, 'q': False, 'r': False, 's': True, 't': False},
 {'p': False, 'q': False, 'r': True, 's': False, 't': False},
 {'p': True, 'q': False, 'r': False, 's': False, 't': True},
 {'p': False, 'q': False, 'r': False, 's': False, 't': False},
 {'p': False, 'q': False, 'r': True, 's': True, 't': False},
 {'p': False, 'q': True, 'r': False, 's': True, 't': True},
 {'p': False, 'q': True, 'r': True, 's': False, 't': True},
 {'p': True, 'q': True, 'r': True, 's': True, 't': True},
 {'p': False, 'q': True, 'r': False, 's': False, 't': True}]

你能在你的帖子中附加两个数组“a”和“b”吗?我可能可以附加它们,没有真正的限制,我只是在寻找效率。你在寻找,我不认为你会在python中找到任何更有效的东西。我一直在试着使用该库中的产品函数。但是我想不出一种方法来制作我想要的东西,而不必迭代产品并删除重复的代码values@ItamarMushkin不幸的是,没有,这会给我留下和以前一样的问题。我必须剔除我不需要的坏组合。注意,这个答案并不依赖于知道长度都是2!这就行了。然而,它确实假设值和键的数量应该是相同的,遗憾的是,我可以拥有比我更多的键values@edanpatt我更新了我的答案,现在它不需要相等的长度,我将补充,尽管这个解决方案需要2英寸的长度,我给出的是一个例子。a可以是任意长度,b在我的例子中可以是长度2,但我想假设一个一般情况,这是一个不错的开始,但不是,在这样做之后,你必须创建这个函数创建的所有可能的字典组合