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]。
我不确定如何处理这个问题。我是否对索引做了些什么?请帮忙。 谢谢。
答案 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
,然后您可以继续配对sumlist
和gridxy
元素,通常使用{{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