你好我试图定义返回改组名单L1不使用方法random.shuffle改变原来的列表L功能,但我得到这个错误信息:builtin_function_or_method”对象没有属性洗牌
builtin_function_or_method object has no attribute shuffle
import random
def shuffle_list(l):
l1=random.shuffle(l)
return(l1)
你好我试图定义返回改组名单L1不使用方法random.shuffle改变原来的列表L功能,但我得到这个错误信息:builtin_function_or_method”对象没有属性洗牌
builtin_function_or_method object has no attribute shuffle
import random
def shuffle_list(l):
l1=random.shuffle(l)
return(l1)
random.shuffle改变列表的顺序并返回None。
>>> lst = [1,2,3]
>>> shuffle_list(lst)
>>> print lst
[3, 1, 2]
>>> shuffle_list(lst)
>>> print lst
[1, 3, 2]
所以,如果你不关心原始列表的顺序,你的代码可能仅仅是:
random.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)
但是当我用简单的方法原始列表的变化,我想改组副本,无修改原始列表 – Lahbabi
在这种情况下,有人在这里回答:https://stackoverflow.com/a/12978830/6616057 –