【问题标题】:Python: Non-Uniform Array using List ComprehensionPython:使用列表理解的非均匀数组
【发布时间】:2017-05-05 18:27:03
【问题描述】:

我想使用带有可变大小子数组的列表推导来初始化一个二维数组。数组中的所有值都应该是随机的。

请参见下面的示例 - 请注意,dim 中的每个数字指的是子数组的长度。

dim = [1,3,1] -> this would make the array:
[[.143],
[.534], [.732], [.741],
[.989]]

到目前为止,我已经尝试了以下方法:

arr = [[random.random() for b in range(b)] for a in range(len(dim))]]

但是我收到了错误NameError: name 'b' is not defined。我错过了一些简单的事情吗?我显然可以使用 use list appending 和传统的 for 循环,但我觉得有一种更 python-y 的方式来做到这一点!

【问题讨论】:

  • for b in range(b) 你希望它做什么?你不是说in range(a)吗?
  • 另外,for a in range(len(nnDim)) 没有做你想做的事(不管 nnDim 是什么)。你可能只是想要for a in dim
  • 最后,给a一个有意义的名字,用_代替b来表示变量没有被使用:[[random.random() for _ in range(size)] for size in dim]

标签: python arrays list syntax list-comprehension


【解决方案1】:

这是一个非常简单的问题 - 正确的语法是:

arr = [[random.random() for b in range(dim[a])] for a in range(len(dim))]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多