【发布时间】:2015-04-29 07:01:22
【问题描述】:
这是我的代码:
import random
from random import shuffle
a = ['a','b','c','d']
b = ['a','b','c','d']
c = ['w','x','y','z']
d = ['w','x','y','z']
indices = random.sample(range(len(a)), len(a))
a = map(a.__getitem__, indices)
b = map(b.__getitem__, indices)
shuffle(c)
shuffle(d)
print a,b,c,d
这段代码的作用是将 a 和 b 按相同的顺序打乱,并按自己的顺序打乱 c 和 d。我现在要做的是制作两个更长的列表,由 a 和 c、b 和 d 组成,并将它们按随机顺序排列。我想要的是 a 和 b 在列表中保持相同的顺序。有没有办法做到这一点?任何帮助将不胜感激。 :)
编辑:
我希望输出看起来像这样,其中列表 a&b 对应,而 c&d 只是独立随机化的。
['d','x','w','b','a','y','c','z']
['d','z','y','b','a','x','c','w']
【问题讨论】:
-
请显示您正在寻找的输出示例。
-
会做,我在上面加。
-
您是否希望 a 和 b 在新的组合列表中不仅保持相同的顺序,而且保持相同的位置?例如,您的新列表是否可以是
['a', 'b', 'c', 'd', 'w', 'x', 'y', 'z']和['z', 'a', 'y', 'b', 'x', 'c', 'w', 'd'],其中 abcd 在两个列表中的相对顺序相同,但位置不同? -
另外,a/b 的元素是否总是与 c/d 的元素不同,或者两者都包含某些元素?
-
如果
a和b的元素总是在同一个位置,可以对索引进行采样,例如random.sample(range(len(a)+len(c),4),并将a的四个元素放入组合列表在这些位置上,然后从左到右依次填写c和d中的位置。
标签: python list random shuffle