排列在以下列表列表中指定:
lines = [
[0, 1, 2, 3, 4, 5, 6, 7, 8],
[8, 1, 2, 3, 4, 5, 6, 7, 0],
[4, 0, 8, 2, 6, 3, 7, 1, 5]]
此列表应按照'行中指定的顺序重新排列':
data = [a,b,c,d,e,f,g,h,i]
示例置换(遵循序列8 1 2 3 4 5 6 7 0),
random = [i,b,c,d,e,f,g,h,a]
我尝试过的事情:
for entries in lines:
for shuffle in entries:
random.append(data[shuffle])
答案 0 :(得分:1)
如果我已正确理解您,您可以通过制作一个功能itemgetter from operator module来完成,然后按照您的需要调用它:
>>> from operator import itemgetter
>>> def sorting(lists,i,data):
return [x for x in itemgetter(*lists[i])(data)]
>>> random = sorting(lines,1,data)
['i', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'a']
或者,
您可以使用内置方法map根据您的data
列表列表对您的permutation
列表进行排序(此处为正确的术语),这样:
>>> def sorting(lists,i,data):
return map(data.__getitem__,lists[i])
>>> random = sorting(lines,1,data)
['i', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'a']
答案 1 :(得分:0)
鉴于您正在使用排列,我建议您查看numpy数组。具体而言,这通过排列"重新排列"操作变得简单,索引为arr[perm]
。