随机排列数字、字符和符号列表
Shuffle a list of numbers, character and symbols
我正在创建一个简单的程序来生成密码,密码 'List' 由数字、符号和字符组成。在此过程中,我想对它们进行随机化和洗牌。
我使用 random.shuffle 方法来打乱列表。我的问题(抱歉,Python 很新)- 为什么我们不能将洗牌 activity 的结果存储到变量中。
举个例子。
mylist = ["apple", "banana", "cherry"]
shufflefinal = random.shuffle(mylist)
(为什么我们不能将 random.shuffle(mylist) 存储到变量 shufflefinal 中)
这里的规则是什么?我了解如何获得结果,但想了解差异以及为什么不能通过变量存储和检索结果的逻辑。
您的见解很有价值。
random.shuffle() 函数修改原始列表。这个函数 returns None 所以它不能将修改后的列表存储到 shuffllefinal var.
mylist = ["apple", "banana", "cherry"]
print("Before shuffle: ", mylist)
random.shuffle(mylist)
print("After shuffle: ", mylist)
根据 random.shuffle 上的文档:
Shuffle the sequence x in place.
这意味着作为参数提供的列表发生了变化。它遵循与sort
相同的原则,也是in-place。
如果您想保留原始列表不变,请创建一个副本:
mylist = ["apple", "banana", "cherry"]
shufflefinal = mylist[:] # Get a shallow copy
random.shuffle(shufflefinal) # Shuffle the copy
上面的文档提到了另一种方式:
To shuffle an immutable sequence and return a new shuffled list, use sample(x, k=len(x))
instead.
所以在你的情况下:
mylist = ["apple", "banana", "cherry"]
shufflefinal = random.sample(mylist, k=len(mylist))
我正在创建一个简单的程序来生成密码,密码 'List' 由数字、符号和字符组成。在此过程中,我想对它们进行随机化和洗牌。 我使用 random.shuffle 方法来打乱列表。我的问题(抱歉,Python 很新)- 为什么我们不能将洗牌 activity 的结果存储到变量中。 举个例子。
mylist = ["apple", "banana", "cherry"]
shufflefinal = random.shuffle(mylist)
(为什么我们不能将 random.shuffle(mylist) 存储到变量 shufflefinal 中) 这里的规则是什么?我了解如何获得结果,但想了解差异以及为什么不能通过变量存储和检索结果的逻辑。
您的见解很有价值。
random.shuffle() 函数修改原始列表。这个函数 returns None 所以它不能将修改后的列表存储到 shuffllefinal var.
mylist = ["apple", "banana", "cherry"]
print("Before shuffle: ", mylist)
random.shuffle(mylist)
print("After shuffle: ", mylist)
根据 random.shuffle 上的文档:
Shuffle the sequence x in place.
这意味着作为参数提供的列表发生了变化。它遵循与sort
相同的原则,也是in-place。
如果您想保留原始列表不变,请创建一个副本:
mylist = ["apple", "banana", "cherry"]
shufflefinal = mylist[:] # Get a shallow copy
random.shuffle(shufflefinal) # Shuffle the copy
上面的文档提到了另一种方式:
To shuffle an immutable sequence and return a new shuffled list, use
sample(x, k=len(x))
instead.
所以在你的情况下:
mylist = ["apple", "banana", "cherry"]
shufflefinal = random.sample(mylist, k=len(mylist))