【发布时间】:2016-01-19 17:47:31
【问题描述】:
打乱 Python 列表很简单:
>>> import random
>>> random.seed(100)
>>> a = [1, 2, 3, 4, 5, 6, 7]
>>> random.shuffle(a)
>>> a
[7, 1, 5, 6, 4, 3, 2]
两列Python列表如何打乱?
所以,具体来说,我有以下代表形式的列表:
[
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
1
],
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
2
],
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
3
],
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
4
],
# ... etc.
]
您可以将其想象为一种数据形式,它在一个列中捕获事件的三个特征(三个高精度数字),并在第二列中包含事件编号。
我想打乱这个两列的列表,以便打乱具有相应事件编号的事件。请注意,我不想打乱事件特征列表。因此,在本例中,随机播放的结果可能如下:
[
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
3
],
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
4
],
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
1
],
[
0.121282446303956,
2.1595318494748978,
0.43386778589085612
],
[
2
],
# ... etc.
]
可以看到事件的顺序从1、2、3、4变成了3、4、1、2。
什么是做这种洗牌的好方法?
【问题讨论】:
-
使用具有重复元素的列表作为改组的示例可能不是一个好主意。如果您使用不同的“事件”编号,示例会更清晰
-
将具有不同语义的列表转换为元组列表(stackoverflow.com/questions/5389507/…)并打乱元组。
标签: python list random shuffle