虽然使用集合更酷,但您也可以打乱12名球员的列表并对其进行切片:
import random
all_players = list(range(12))
random.shuffle(all_players)
print(all_players[:6])
print(all_players[6:])
输出:
[3, 7, 10, 11, 0, 2]
[4, 8, 5, 6, 9, 1]
特别是如果您需要多次执行此操作,您可以避免反复创建多个集合/列表,而是使用一个包含12个元素的列表作为数据存储器。
时间:
import random
for l in range(12,30,2):
def shuffle():
all_players = list(range(l))
random.shuffle(all_players)
return all_players[: l // 2], all_players[l // 2 :]
def sets():
all_players = set(range(l))
team1 = set(random.sample(all_players, l//2))
return team1, all_players - team1
from timeit import timeit
print(l, timeit(shuffle, number=10000))
print(l, timeit(sets, number=10000), "\n")
输出:
12 0.27789219999999994
12 0.2809480000000001
14 0.3270378999999999
14 0.3056880999999998
[...]
26 0.6052818999999996
26 0.4748621000000002
28 0.6143755999999998
28 0.49672119999999964
if x!=A
始终为真。 - mousetail