python shuffle列表不工作

Python shuffle list not working

本问题已经有最佳答案,请猛点这里访问。

我是Python的新手。从C++背景来看,我很讽刺地理解了这种语言的简单性,更不用说空闲的工作了。

无论如何,我需要编写一个简单的函数,它接受一个列表,并返回一个新的列表,其中的元素被无序排列。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
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()

在我输入元素(本例中是数字)之后,没有输出。因此,由于某种原因,无序播放列表没有显示在其中。有什么想法吗?

1
2
3
4
5
6
7
>>>
: 1
: 2
: 3
: 4
: 5
>>>


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

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

因此,将aList返回:

1
2
3
4
5
6
7
8
9
import random
def shuffle():
    aList = []
    i = 0
    for i in range(0, 5):
        elements = input(":")
        aList.append(elements)
    random.shuffle(aList)
    return aList

random.shuffle在适当的位置工作,这意味着它更新提供的参数,而不是返回一个值(默认值除外,None)。在C++中,你需要传递一个对列表的引用(例如EDCOX1(8)),但是在Python中,这种区别并不存在。

所以,您实际上是将shuffleList设置为None,然后返回它!

您可以通过使用print在完成后实际显示结果来确认这一点,据我所知,仅从函数返回值不会输出任何内容:

1
2
results = shuffle()
print results

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

1
2
random.shuffle(aList)
return aList


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

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

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

random.shuffle()将列表重新排序到位,不返回任何列表。


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

1
2
3
4
5
6
7
8
9
10
11
12
13
import random

def shuffle():
    aList = []

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

    random.shuffle(aList)
    return aList

print shuffle()