我有一个程序可以生成一个二维列表,其中包含一定数量的二维坐标在一定范围内的二维列表。 (这并不重要,如果嵌套的列表或元组),例如:随机,非重复2D列表Python
[[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个可能的'y's,那么对于第二个'x'有'19''' y等等,直到你得到20 + 19 + ... + 11 = 155'。 –
那么,这两种解决方案都适合你吗? – Divakar