【发布时间】:2020-03-02 04:33:32
【问题描述】:
我想生成一个列表的 n 个随机版本,这样每次随机化的顺序都与之前的不同,并且每个元素的位置必须与之前的列表不同。我已经生成了列表的所有可能排列的列表,但我被困在如何选择符合我的条件的子列表上。我在想也许列表理解可以工作,但不知道如何完成它。
# constraints: n <= 12
lst = ['John', 'William', 'Michael', 'Victor', 'Tom', 'Charley', 'Patrick', 'David']
permutations = list(itertools.permutations(lst))
randomized_lists = [i for i in permutations if <conditions>]
任何想法如何做到这一点?另外,有没有更好(更有效)的方法来解决这个问题?
【问题讨论】:
-
你的条件是什么?
-
@mario_sunny 他们在问题中说。
-
@mario_sunny 每个元素也必须有不同的位置
-
the sub-lists that match my conditions.- 哪些条件?也许我不明白这个问题。 -
@mario_sunny。 OP 希望以这样一种方式对列表进行洗牌,以使所有元素都不会在其原始位置结束。