您好我正在尝试定义一个函数,该函数返回一个混洗列表l1而不使用random.shuffle方法更改原始列表l但是我收到了此错误消息:
builtin_function_or_method object has no attribute shuffle
import random
def shuffle_list(l):
l1=random.shuffle(l)
return(l1)
答案 0 :(得分:1)
from random import shuffle
def shuffle_list(l):
def shuffle_list(l):
shuffle(l)
return l
直接导入随机播放并返回l
,并且不要将其保存到任何变量中,因为l1 = shuffle(l)
将返回None
我知道这来晚了。
答案 1 :(得分:0)
random.shuffle改变列表的顺序并返回None。
>>> lst = [1,2,3]
>>> shuffle_list(lst)
>>> print lst
[3, 1, 2]
>>> shuffle_list(lst)
>>> print lst
[1, 3, 2]
因此,如果您不关心原始列表的顺序,您的代码可能只是:
import random
random.shuffle(l)
答案 2 :(得分:0)
random.shuffle()
就地修改列表并且不返回任何内容,因此您需要首先复制list参数,shuffle,然后返回它,以便保留原始:
import random
def shuffle_list(lst):
lst2 = lst.copy()
random.shuffle(lst2)
return lst2
items = list(range(10))
shuffled = shuffle_list(items)
print(items) # => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(shuffled) # => [6, 2, 1, 9, 3, 0, 8, 4, 5, 7] (or some other rearrangement)