builtin_function_or_method'对象没有属性shuffle

时间:2017-06-01 01:25:17

标签: python

您好我正在尝试定义一个函数,该函数返回一个混洗列表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)

3 个答案:

答案 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)