【发布时间】:2017-03-28 15:04:03
【问题描述】:
我有一个程序可以生成一个二维列表,其中包含一定范围内的一组二维坐标。 (嵌套是列表还是元组都没有关系)例如:
[[5, 0], [4, 6], [9, 7], [2, 9], [2, 6]]
问题是我希望没有两个子列表相等,同时保持外部列表的长度相同。
我尝试过使用 random.sample:
pointx = random.sample(range(10),5)
pointy = random.sample(range(20),5)
points = list(zip(pointx,pointy))
其中 10 是 x 范围,20 是 y 范围,5 是点数:
[(1,0),(9,19),(8,13),(3,5),(0,14)]
但是,这种方法的最大点数仅为 10+20,由于单独的样本列表,显然应该是 10*20。
在写这篇文章的时候,我意识到:
point2D = []
point1D = random.sample(range(10*20),5)
[point2D.append(divmod(i,10)) for i in point1D]
这是一种可行的方法,但也很笨拙,我想知道是否有可能涉及 numpy 的更好的解决方案。
提前致谢。
【问题讨论】:
-
上述方法的最大点数是155而不是200或30。对于第一个
x有20个可能ys,然后对于第二个x有19可能ys 等,直到你得到20 + 19 + ... + 11 = 155。 -
那么,发布的任何一个解决方案都对您有用吗?