【问题标题】:Creating ND arrays at runtime with standard library使用标准库在运行时创建 ND 数组
【发布时间】:2019-05-01 19:30:46
【问题描述】:

我有三个数组

a = [2]
b = [2,3,6]
c = [1]

我想合并它们,这样我得到一个大小为len(a)*len(b) 的数组,其中包含两者的所有排列。 (C 将始终包含一个值)

我认为这样的事情会起作用

newArr = [for i in range len(a)*len(b) [for x in a][for y in b][for z in c]]
print(newArr)

[[2,2,1],[2,3,1],[2,6,1]]

但是它似乎不允许在语言的语法中使用它。有没有人知道我如何使用标准库做到这一点?

【问题讨论】:

    标签: python arrays python-3.x numpy


    【解决方案1】:
    [[x, y, z] for x in a for y in b for z in c]
    

    例如:

    >>> [[x, y, z] for x in [2] for y in [2,3,6] for z in [1]]
    [[2, 2, 1], [2, 3, 1], [2, 6, 1]]
    

    【讨论】:

      【解决方案2】:

      使用itertools.product(...)

      import itertools
      
      a = [2]
      b = [2,3,6]
      c = [1]
      
      p = itertools.product(a, b, c)
      
      print(list(p))
      
      [(2, 2, 1), (2, 3, 1), (2, 6, 1)]
      

      【讨论】:

        猜你喜欢
        • 2011-08-19
        • 1970-01-01
        • 1970-01-01
        • 2013-02-01
        • 1970-01-01
        • 2010-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多