如何在python中从2D数组的每个子数组中选择一个元素?
因此,python中只提供了一个变量:如何在python中从2D数组的每个子数组中选择一个元素?,python,arrays,python-3.x,list,combinations,Python,Arrays,Python 3.x,List,Combinations,因此,python中只提供了一个变量: array=[[1,2,3]、[4,5,6]、[7,8,9]、[10,11]。 您希望能够从该数组的每个元素中返回仅包含1个元素的数组列表 因此,在这种情况下,我们的答案是: [1、4、8、10、[1、4、4、4、8、10、[1、4、8、8、10、[1、4、4、8、8、8、11、11、[1、4、4、9、9、10、[1、4、4、4、4、4、9、9、9、10、[1、4、4、4、8、8、8、8、8、8、8、8、11、11、11、[1、4、4、4、8、8、8、8、
array=[[1,2,3]、[4,5,6]、[7,8,9]、[10,11]。
您希望能够从该数组的每个元素中返回仅包含1个元素的数组列表
因此,在这种情况下,我们的答案是:
[1、4、8、10、[1、4、4、4、8、10、[1、4、8、8、10、[1、4、4、8、8、8、11、11、[1、4、4、9、9、10、[1、4、4、4、4、4、9、9、9、10、[1、4、4、4、8、8、8、8、8、8、8、8、11、11、11、[1、4、4、4、8、8、8、8、8、8、11、8、11、11、11、11、11、11、11、11、11、11、11、[1、1、4、4、1、4、4、4、4、4、4、4、4、9、9、9、9、9、9、9、9、9、9、9、10、10、9、10、10、10、10、10、10、10、10、10、10、10、10、[2,4,8,11],,[2, 4, 9, 10], [2, 4, 9, 11], [2, 5, 7, 10], [2, 5, 7, 11], [2, 5, 8, 10], [2, 5, 8, 11], [2, 5, 9, 10], [2, 5, 9, 11], [2, 6, 7, 10], [2, 6, 7, 11], [2, 6, 8, 10], [2, 6, 8, 11], [2, 6, 9, 10], [2, 6, 9, 11], [3, 4, 7, 10], [3, 4, 7, 11], [3, 4, 8, 10], [3, 4, 8, 11], [3, 4, 9, 10], [3, 4, 9, 11], [3, 5, 7, 10], [3, 5, 7, 11], [3, 5, 8, 10], [3,5,8,11],[3,5,9,10],[3,5,9,11],[3,6,7,10],[3,6,7,11],[3,6,8,10],[3,6,8,11],[3,6,9,10],[3,6,9,11]
我想强调的是,您不知道子数组的数量,您得到的唯一输入是变量array
我曾想过编写一个递归调用自身的函数,从任意数量的数组中提取元素,但我找不到它的逻辑
如何解决这个问题
我想知道这个问题的答案,因为这是一个更大问题的一部分,在这个问题中,您需要从变量数组的每个数组中准确地选择1元素,这样所选元素的最大值和最小值之间的差异就是整体最小值
在array=[[1,2,3],[4,5,6],[7,8,9],[10,11]
的情况下,答案将是7,我们可以通过选择(3,5,8,10)来获得
有没有其他方法来解决这个问题,而不必生成所有元素的所有排列?您可以试试这个
来自itertools导入产品的
数组=[[1,2,3],[4,5,6],[7,8,9],[10,11]]
结果=列表(产品(*数组))
打印(结果)
>>> [(1, 4, 7, 10), (1, 4, 7, 11), (1, 4, 8, 10), (1, 4, 8, 11), (1, 4, 9, 10),
(1, 4, 9, 11), (1, 5, 7, 10), (1, 5, 7, 11), (1, 5, 8, 10), (1, 5, 8, 11),
(1, 5, 9, 10), (1, 5, 9, 11), (1, 6, 7, 10), (1, 6, 7, 11), (1, 6, 8, 10),
(1, 6, 8, 11), (1, 6, 9, 10), (1, 6, 9, 11), (2, 4, 7, 10), (2, 4, 7, 11),
(2, 4, 8, 10), (2, 4, 8, 11), (2, 4, 9, 10), (2, 4, 9, 11), (2, 5, 7, 10),
(2, 5, 7, 11), (2, 5, 8, 10), (2, 5, 8, 11), (2, 5, 9, 10), (2, 5, 9, 11),
(2, 6, 7, 10), (2, 6, 7, 11), (2, 6, 8, 10), (2, 6, 8, 11), (2, 6, 9, 10),
(2, 6, 9, 11), (3, 4, 7, 10), (3, 4, 7, 11), (3, 4, 8, 10), (3, 4, 8, 11),
(3, 4, 9, 10), (3, 4, 9, 11), (3, 5, 7, 10), (3, 5, 7, 11), (3, 5, 8, 10),
(3, 5, 8, 11), (3, 5, 9, 10), (3, 5, 9, 11), (3, 6, 7, 10), (3, 6, 7, 11),
(3, 6, 8, 10), (3, 6, 8, 11), (3, 6, 9, 10), (3, 6, 9, 11)]
您可以试试这个
来自itertools导入产品的
数组=[[1,2,3],[4,5,6],[7,8,9],[10,11]]
结果=列表(产品(*数组))
打印(结果)
>>> [(1, 4, 7, 10), (1, 4, 7, 11), (1, 4, 8, 10), (1, 4, 8, 11), (1, 4, 9, 10),
(1, 4, 9, 11), (1, 5, 7, 10), (1, 5, 7, 11), (1, 5, 8, 10), (1, 5, 8, 11),
(1, 5, 9, 10), (1, 5, 9, 11), (1, 6, 7, 10), (1, 6, 7, 11), (1, 6, 8, 10),
(1, 6, 8, 11), (1, 6, 9, 10), (1, 6, 9, 11), (2, 4, 7, 10), (2, 4, 7, 11),
(2, 4, 8, 10), (2, 4, 8, 11), (2, 4, 9, 10), (2, 4, 9, 11), (2, 5, 7, 10),
(2, 5, 7, 11), (2, 5, 8, 10), (2, 5, 8, 11), (2, 5, 9, 10), (2, 5, 9, 11),
(2, 6, 7, 10), (2, 6, 7, 11), (2, 6, 8, 10), (2, 6, 8, 11), (2, 6, 9, 10),
(2, 6, 9, 11), (3, 4, 7, 10), (3, 4, 7, 11), (3, 4, 8, 10), (3, 4, 8, 11),
(3, 4, 9, 10), (3, 4, 9, 11), (3, 5, 7, 10), (3, 5, 7, 11), (3, 5, 8, 10),
(3, 5, 8, 11), (3, 5, 9, 10), (3, 5, 9, 11), (3, 6, 7, 10), (3, 6, 7, 11),
(3, 6, 8, 10), (3, 6, 8, 11), (3, 6, 9, 10), (3, 6, 9, 11)]
添加你的递归函数。@shaikmoeed,我没有递归函数的逻辑。我希望能对它有所了解。添加你的递归函数。@shaikmoeed,我没有递归函数的逻辑。我希望能对它有所了解。