Python中是否有一个按数据块对数据进行混洗的函数?

jmi*_*mir 5 python shuffle list

例如,至于

[1 2 3 4 5 6]
Run Code Online (Sandbox Code Playgroud)

如前所述,在保持数据块(包括2个数据)的同时对数据进行混洗.我们将获得:

[3 4 1 2 5 6]
Run Code Online (Sandbox Code Playgroud)

用Python做任何方式吗?

Wil*_*sem 8

一种直接的方法是使用以下三个步骤:

  1. 创建块(2d列表);
  2. 洗牌那个清单; 和
  3. 再次合并这些列表.

所以:

import random

# Import data
data = [1,2,3,4,5,6]
blocksize = 2

# Create blocks
blocks = [data[i:i+blocksize] for i in range(0,len(data),blocksize)]
# shuffle the blocks
random.shuffle(blocks)
# concatenate the shuffled blocks
data[:] = [b for bs in blocks for b in bs]
Run Code Online (Sandbox Code Playgroud)

如果您不想重新存储数据data,可以使用:

data = [b for bs in blocks for b in bs]
Run Code Online (Sandbox Code Playgroud)

对于这个数据,我获得了:

>>> data
[3, 4, 1, 2, 5, 6]
Run Code Online (Sandbox Code Playgroud)

第二次:

>>> data
[5, 6, 1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

  • @Chris_Rands [有](/sf/answers/2274451861/):) (2认同)