我如何洗牌对象列表?我尝试了random.shuffle:
import random
b = [object(), object()]
print(random.shuffle(b))
但它输出:
None
我如何洗牌对象列表?我尝试了random.shuffle:
import random
b = [object(), object()]
print(random.shuffle(b))
但它输出:
None
当前回答
文档为随机。Shuffle声明它会
打乱序列x的位置。
不要做:
print(random.shuffle(xs)) # WRONG!
相反,做:
random.shuffle(xs)
print(xs)
其他回答
你可以这样做:
>>> A = ['r','a','n','d','o','m']
>>> B = [1,2,3,4,5,6]
>>> import random
>>> random.sample(A+B, len(A+B))
[3, 'r', 4, 'n', 6, 5, 'm', 2, 1, 'a', 'o', 'd']
如果您想返回到两个列表,那么您可以将这个长列表拆分为两个。
你可以使用random.choices()来洗牌你的列表。
TEAMS = [A,B,C,D,E,F,G,H]
random.choices(TEAMS,k = len(TEAMS))
上面的代码将返回一个与前面列表相同长度的随机列表。
希望有帮助!!
文档为随机。Shuffle声明它会
打乱序列x的位置。
不要做:
print(random.shuffle(xs)) # WRONG!
相反,做:
random.shuffle(xs)
print(xs)
from random import random
my_list = range(10)
shuffled_list = sorted(my_list, key=lambda x: random())
对于希望交换排序函数的某些应用程序,这种替代方法可能很有用。
计划:写出shuffle而不依赖于库来做繁重的工作。示例:从元素0开始从头遍历列表;为它找一个新的随机位置,比如6,把0的值放到6,把6的值放到0。移动到元素1并重复此过程,如此循环到列表的其余部分
import random
iteration = random.randint(2, 100)
temp_var = 0
while iteration > 0:
for i in range(1, len(my_list)): # have to use range with len()
for j in range(1, len(my_list) - i):
# Using temp_var as my place holder so I don't lose values
temp_var = my_list[i]
my_list[i] = my_list[j]
my_list[j] = temp_var
iteration -= 1