你好我試圖定義返回改組名單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 –