我是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 >>>
答案 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()