Python匿名化使用随机洗牌列表

2024-06-17 10:42:27 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是我的编码:

word = ma['vals']
shuffled = list(word)                   
random.shuffle(word)
shuffled = ''.join(random.sample(word, len(word)))                      
newval = shuffled           

结果将是BALLOONSFLOWERSGIFTSFLOWERSCANDYFLOWERSBALLOONSBALLOONS。当我希望结果是例如,如果我在洗牌gifts,那么结果将是stgfi。在


Tags: sample编码lenrandomlistwordjoinshuffle
3条回答

评论太长了,所以我会把它作为答案,尽管它不是

对不起,请不要误会,但这是我15年来见过的最糟糕的代码。你应该至少再复习一次基础教程,以便更好地掌握所发生的事情,因为我觉得你只是随意地输入一些东西,而不去理解它们的作用。

让我们从头开始:

ma['vals'] = [balloons, flowers, gifts, candy]

好吧,所以我假设ma是一本字典。你现在就用那本字典了。为什么在那里?

^{pr2}$

现在您只需将word设置为[balloons, flowers, gifts, candy]。为什么不直接做呢?另外,不要把一系列单词称为“word”。这意味着它是一个单词,但你把它列为一个列表。

shuffled = list(word) 

你为什么要写单字?已经是一张单子了。你现在所做的一切都准备好了:

shuffled = [balloons, flowers, gifts, candy]

你叫它洗牌,其实不然。

random.shuffle(word)

现在你洗牌。但是你没有使用shuffled变量,而是使用了variable这个词。

shuffled = ''.join(random.sample(word, len(word)))   

现在您将shuffled设置为另一个对象,因此您从未使用过第一个shuffled。另外,从一个和列表一样长的列表中随机抽取一个样本,这和随机抽取列表是一样的,而且这个列表已经被洗牌了。

newval = shuffled

你为什么这么做?

实际上,您的所有代码都可以压缩为:

newval = [balloons, flowers, gifts, candy]
random.shuffle(newval)

这将有相同的最终结果:你将有一个随机排列的单词列表。

因此,三分之二的代码最终都没有做任何事情。上面的内容也很清楚为什么代码的行为不像您所想的那样。当你想洗牌一个单词的时候,你可以把一个单词的列表乱排。

必须从字符串创建列表。{1>在示例中,{1>将通过访问。然后可以通过调用list并传入字符串将其转换为列表。函数random.shuffle的命名可选参数random是排序所基于的函数。random.shuffle在适当的地方修改传入random.shuffle的列表,因此为什么要在列表上调用join,而不是调用{}的结果。

>>> wordList = list(ma["vals"][0])) #"balloons"
>>> random.shuffle(wordList,random=random.random)
>>> ''.join(wordList)
'oboanlls'

如果您想随机选择一个单词,然后随机地将该单词的字母打乱:

In [27]: letters = list(random.choice(word))

In [28]: random.shuffle(letters)

In [29]: ''.join(letters)
Out[29]: 'blanolos'

这里,word是与脚本中相同的变量(即单词的列表)。

相关问题 更多 >