如何在列表中洗牌?

时间:2017-03-08 14:51:18

标签: python arrays

我想改变列表中元素的顺序。

from random import shuffle
words = ['red', 'adventure', 'cat', 'cat']
shuffled = shuffle(words)
print(shuffled) # expect new order for, example ['cat', 'red', 'adventure', 'cat']

作为回复,我得到None,为什么?

3 个答案:

答案 0 :(得分:29)

这是因为random.shuffle随机播放并且没有返回任何内容(因此为什么会得到None)。

import random

words = ['red', 'adventure', 'cat', 'cat']
random.shuffle(words)

print(words) # Possible Output: ['cat', 'cat', 'red', 'adventure']

修改

鉴于您的编辑,您需要更改的内容是:

from random import shuffle

words = ['red', 'adventure', 'cat', 'cat']
newwords = words[:] # Copy words
shuffle(newwords) # Shuffle newwords

print(newwords) # Possible Output: ['cat', 'cat', 'red', 'adventure']

from random import sample

words = ['red', 'adventure', 'cat', 'cat']
newwords = sample(words, len(words)) # Copy and shuffle

print(newwords) # Possible Output: ['cat', 'cat', 'red', 'adventure']

答案 1 :(得分:1)

random.shuffle()是没有返回值的方法。因此,当您将其分配给标识符(变量,如x)时,它将返回“ none”。

答案 2 :(得分:0)

要随机排列列表中的顺序(在一行代码中),我建议使用熊猫:

import pandas as pd
words = pd.Series(words).sample(1).tolist()