随机分配每个坐标[a,b]与列表中的每个元素

时间:2015-02-11 04:44:46

标签: python

GRIDCOLS = 3;

GRIDROWS = 4 ;

gidder = 20;

gridxy = [];

for column in range (GRIDCOLS): 
..   yrow = column * 100+ 50 

..   for row in range (GRIDROWS): 

..     xcell = row * 100+50 

..     ycell = yrow + random.randint(-gidder, gidder) 

..     gridxy.append([xcell, ycell]) 

..     print (gridxy) 

这将创建类似[50, 58], [150, 56], [250, 39], [350, 52]

的内容
sumlist = ['a','b','c','$','4','2','3']

我想要做的是随机地为每个总和列表中的每个元素分配每个坐标[a,b]。

我不确定如何处理这个问题。我是否对索引做了些什么?请帮忙。 谢谢。

2 个答案:

答案 0 :(得分:0)

您需要什么样的作业?

您可以使用zip([iterable, ...])

  

此函数返回元组列表,其中第i个元组包含每个参数序列或可迭代的第i个元素。

>>> zip(sumlist, gridxy)
[('a', [50, 58]), ('b', [150, 56]), ('c', [250, 39]), ('$', [350, 52])]

您可以创建dict

>>> dict(zip(sumlist, gridxy))
{'a': [50, 58], 'b': [150, 56], 'c': [250, 39], '$': [350, 52]}

如果您需要有序词典,可以使用collections.OrderedDict

  

返回一个dict子类的实例,支持通常的dict方法。

答案 1 :(得分:0)

您必须random.shuffle您的数据......

import random
sumlist = ['a','b','c','$','4','2','3']
random.shuffle(sumlist) # shuffles in place!

此时,您对数据进行随机排列,并存储到sumlist,然后您可以继续配对sumlistgridxy元素,通常使用{{1} } builtin(以最短的可迭代长度截断配对)或zip模块中的zip_longest,允许您使用默认值作为填充。

itertools

当然,如果您认为在代码中使用默认值,则可以使用# create a list of tuples lot = [t for t in zip(sumlist,gridxy)] # create a dict d = {s:xy for s, xy in zip(sumlist,gridxy)}

注意zip_longest就地运行(并返回random.shuffle)的事实,这样如果您想以原始顺序访问您的数据,那么您希望在改组之前将其保存在某个地方

None