Python方法等同于racket的构建向量

时间:2016-01-17 05:05:19

标签: python list vector lambda

我正在寻找一种方法,可以在python中完成,但使用列表而不是向量:

(build-vector n (lambda _ (build-vector n (lambda _ (my-random n)))))

这是我提出的(但有2D列表)

   table = []
    for i in range(n):
        trans = [(random n) for i in range(n)]
        table = table + [trans]

但他们给出了不同的结果。我不确定哪里出错,感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

我不熟悉球拍但build-vector看起来像列表理解或map

Racket: (build-vector n proc)
Python: [proc(i) for i in range(n)]
Python: map(proc, range(n))

所以看起来你正在建立一个随机数的nxn矩阵:

球拍:

(build-vector n (lambda _ (build-vector n (lambda _ (my-random n)))))

的Python:

[[my_random(n) for _ in range(n)] for _ in range(n)]

因此random.randrange使用my_random

>>> from random import randrange as my_random
>>> n = 5
>>> [[my_random(n) for _ in range(n)] for _ in range(n)]
[[1, 2, 2, 0, 3],
 [3, 0, 2, 1, 3],
 [3, 1, 3, 0, 0],
 [0, 0, 2, 4, 4],
 [1, 0, 1, 4, 1]]