Python函数提供了与上一个完全不同的随机顺序

问题描述 投票:-2回答:1

我正在寻找Python中的函数,该函数每次都为您提供不同的排序,而无需替换给定的序列。例如,给定:

[0, 1, 2, 3, 4, 5]

该功能应提供诸如以下的组合:

[1, 2, 3, 4, 5, 0]

[2, 3, 1, 5, 0, 4]

但不是下一个(因为数字0已经在第一个位置)

[0, 4, 5, 1, 3, 2]

或逻辑上是给定序列的开始。

python random sequence sampling
1个回答
-1
投票
from itertools import permutations

a = [0, 1, 2, 3, 4, 5]


per = list(permutations(a))

for i in per:
    if i[0] != a[0]:
        print(i)

0
投票

一种可能的解决方案,旋转列表然后转置它:

from random import sample

lst = [0, 1, 2, 3, 4, 5]

def rotate(l, x):
    return l[-x:] + l[:-x]

vals = [*zip(*[rotate(lst, i) for i in sample(range(len(lst)), len(lst))])]

from pprint import pprint
pprint(vals)

打印(例如):

[(1, 0, 3, 4, 2, 5),
 (2, 1, 4, 5, 3, 0),
 (3, 2, 5, 0, 4, 1),
 (4, 3, 0, 1, 5, 2),
 (5, 4, 1, 2, 0, 3),
 (0, 5, 2, 3, 1, 4)]
© www.soinside.com 2019 - 2024. All rights reserved.