Python shuffle列表无法正常工作

时间:2015-02-11 20:19:42

标签: python

我是python的新手。来自C ++背景我很讽刺地理解这种语言的简单性,更不用说IDLE如何工作了。

无论如何我需要编写一个简单的函数,它接受一个列表并返回一个新的列表,里面的元素被洗牌

这是我到目前为止所拥有的

import random
def shuffle():
    aList = []
    i = 0
    for i in range(0, 5):
        elements = input(": ")
        aList.append(elements)

    shuffleList = random.shuffle(aList)
    return shuffleList


shuffle()

并且在我输入元素(在这种情况下为数字)之后,没有输出..所以shuffleList由于某种原因没有在那里显示。有什么想法吗?

>>> 
: 1
: 2
: 3
: 4
: 5
>>>

5 个答案:

答案 0 :(得分:5)

random.shuffle将列表移动到位,其输出为None

由于您在shuffleList = random.shuffle(aList)中存储并返回其输出,因此不会打印任何内容。

相反,请返回aList

import random
def shuffle():
    aList = []
    i = 0
    for i in range(0, 5):
        elements = input(": ")
        aList.append(elements)
    random.shuffle(aList)
    return aList

答案 1 :(得分:2)

random.shuffle是一个就地操作,它不会返回任何内容

>>> l
[0, 1, 2, 3, 4]

>>> random.shuffle(l)
>>> l
[0, 3, 1, 4, 2]

答案 2 :(得分:2)

random.shuffle有效in place,这意味着它会更新提供的参数,而不是返回一个值(默认值为None除外)。在C ++中,您需要将引用传递给列表(例如int** aList),但在Python中,这种区别并不存在。

因此,您实际上将shuffleList设置为None,然后将其返回!

您可以使用print确认这一点,以便在您完成后实际显示结果 - 只要我知道输出任何内容的函数返回值:< / p>

results = shuffle()
print results

要修复它,只需返回aList,而不是将结果存储在另一个变量中:

random.shuffle(aList)
return aList

答案 3 :(得分:1)

random.shuffle()就地重新排序列表并返回无。

答案 4 :(得分:0)

随机播放列表,它不会返回新列表。试试这个:

import random

def shuffle():
    aList = []

    for i in range(0, 5):
        elements = input(": ")
        aList.append(elements)

    random.shuffle(aList)
    return aList

print shuffle()