获得与单词不同的单词的随机排列

问题描述 投票:0回答:1

我想得到一个单词的字母的[[random排列,如果可能,否则这个单词本身。

如何有效地做到这一点?

这是我现在拥有的

from itertools import permutations import random word = 'some_word' permutations = [''.join(permutation) for permutation in permutations(word)] random.shuffle(permutations) scrambled_word = word for permutation in permutations: if permutation != word: scrambled_word = permutation break

[基本上,我只是获得单词所有排列的第一个排列。我将对许多单词进行此操作,但发现此方法效率低下。通常,没有必要获取给定单词的所有排列。

我记住,我可以以某种方式进行迭代的随机排列,从中可以检索第一个排列。如何在Python中完成? permutations的函数itertools是可迭代的,但元素的排列顺序不是随机的。我需要一个[[random

排列,以便它看起来不会像原始单词。
python random permutation shuffle
1个回答
1
投票
random.sample

这不会阻止您偶尔找回原始单词,因为这是有效的排列。如果您不允许使用原始图片,则不会获得真正的随机样本。您可以根据需要过滤掉原始图像。如果您不喜欢收到的单词,请再试一次(确保您检测到所有字母都相同的情况):

scrambled_word = ''.join(random.sample(word, k=len(word)))

0
投票
CODE:

def scramble(word): while True: scrambled_word = ''.join(random.sample(word, k=len(word))) if scrambled_word != word or all(c == word[0] for c in word): return scrambled_word

© www.soinside.com 2019 - 2024. All rights reserved.