Python 具有行合计条件和灵活顺序的置换数组合

Python 具有行合计条件和灵活顺序的置换数组合,python,python-3.x,Python,Python 3.x,我需要一个矩阵,所有可能的数字组合都给定k个数字,行和为1。一个简单的例子: 数字=[0,0.5,1] 这些数字需要排列成一个矩阵,所有可能的数字组合加起来等于1。重要的是,所有k编号都存在。在这个简单的例子中,最终结果应该是这样的。所有数字都存在,每行加起来等于1: d = {'1': [1, 0, 0, 0.5, 0.5, 0], '2': [0, 0, 1, 0.5, 0, 0.5], '3':[0, 1, 0, 0, 0.5, 0.5]} 到目前为止,我已经通过下面的代码尝试了iter

我需要一个矩阵,所有可能的数字组合都给定k个数字,行和为1。一个简单的例子:

数字=[0,0.5,1]

这些数字需要排列成一个矩阵,所有可能的数字组合加起来等于1。重要的是,所有k编号都存在。在这个简单的例子中,最终结果应该是这样的。所有数字都存在,每行加起来等于1:

d = {'1': [1, 0, 0, 0.5, 0.5, 0], '2': [0, 0, 1, 0.5, 0, 0.5], '3':[0, 1, 0, 0, 0.5, 0.5]}
到目前为止,我已经通过下面的代码尝试了itertools.permutations:

numbers = list(itertools.permutations([0,0.5,1], 3))
然而,在给定的标准下,我很难得到期望的结果。我推测我应该将itertools与行值和的一些条件语句结合使用


有人愿意帮忙吗?非常感谢

快速启动

对于这个问题,这只是一个简短的回顾和建议

  • 试着编辑你的问题,直到每个人都理解:每个人越容易理解,在你的脑海中看起来也就越容易

  • 您的问题与组合有关,但并不完全如您所想:

  • 如果你把你的问题颠倒过来:

    每柱

    • 首先,决定是要一个
      1
      ,还是要一个
      0.5
    • 然后选择(组合方式)这些元素的索引
    显示矩阵

    • 创建[0]*n*n矩阵
    • 对于每一列,填写您在上面决定的内容
    如果你做得正确,你应该有一个大小的笛卡尔积

    • 列的可能数量 *
    • 列数

    有些观点使这个问题完全令人困惑。预期输出不是一个矩阵。“行”加起来不等于1。为什么每行的长度包含6个元素。。。?但我认为在示例
    [1,0,0,0.5,0.5,0]
    中,每一行加起来等于2?如果你对每个向量求和,你将得到[1,1,1,1,…],我认为这就是他的意思?