擅长:python、mysql、java
<p>我不知道我是否理解正确,但我认为您可能希望为驱动程序生成排列;如果我错了,请纠正我,但例如,对于3个驱动程序A、B和C,它将是:</p>
<pre><code>[(A, 1), (B, 2), (C, 3)]
[(A, 1), (B, 3), (C, 2)]
[(A, 2), (B, 1), (C, 3)]
[(A, 2), (B, 3), (C, 1)]
[(A, 3), (B, 1), (C, 2)]
[(A, 3), (B, 2), (C, 1)]
</code></pre>
<p>然后注意,在您的案例<code>20! ~ 2 * 10^18</code>中,置换的数量是<code>n!</code></p>
<p>所有可能的排列数量都很大,但您可以通过以下方式获得:</p>
<pre><code>import itertools
drivers = ["Lewis Hamilton","Valteri Bottas","Max Verstappen","Sergio Perez","Lando Norris","Daniel Riccardo","Carlos Sainz","Charles Lecerc","Pierre Gasly","Yuki Tsunoda","Kimi Raikonnen","Antonio Giovnazzi","Sebastian Vettel","Lance Stroll","Fernando Alonso","Estaban Ocon","George Russel","Nicholas Latifi","Mick Schumacher","Nikita Mazepin"]
pos = list(range(len(drivers)))
p = itertools.permutations(pos)
for i in range(10):
x = list(zip(drivers, next(iter(p))))
print(x)
</code></pre>