如何打印第二个输出而不复制任何第一个输出?

2024-10-16 20:46:15 发布

您现在位置:Python中文网/ 问答频道 /正文

这是因为我不能选择和我朋友一样的球员。他是第一个输出,我是第二个输出。下面是我所拥有的

import random

players = ('Giannis', 'LeBron', 'KD', 'Curry', 'Harden', 'AD', 'RW', 'Kawhi', 'Lillard', 'Kyrie', 'PG13',
                        'Klay', 'Jimmy', 'Dwyane', 'Blake', 'MJ', 'KarlAnthony', 'BenSim', 'JohnW', 'Melo')

c_starting5 = random.sample(players, k=5)
i_starting5 = random.sample(players, k=5)

c = c_starting5
i = i_starting5

print(c)
print(i)

Tags: sampleimport朋友randomadkdrwprint
3条回答

由于您希望将10名独特的随机玩家分成两组,每组5名(两组中的所有玩家仍然是唯一的),因此我建议抽取10名样本,然后将其切片:

pool = random.sample(players, 10)
i_starting5, c_starting5 = pool[:5], pool[5:]

如果您需要将players的随机样本存储在i_starting5中,而它们没有存储在c_starting5中,那么我认为您需要的代码如下:

import random

players = ('Giannis', 'LeBron', 'KD', 'Curry', 'Harden', 'AD', 'RW', 'Kawhi', 'Lillard', 'Kyrie', 'PG13',
                        'Klay', 'Jimmy', 'Dwyane', 'Blake', 'MJ', 'KarlAnthony', 'BenSim', 'JohnW', 'Melo')

c_starting5 = random.sample(players, k=5)

left_players = list(set(players) - set(c_starting5)) # This line added

i_starting5 = random.sample(left_players, k=5) # players changed to left_players

c = c_starting5
i = i_starting5

print(c)
print(i)

澄清: 我从5的第一个样本c_starting5中减去原始的player,并将差值存储在left_players中,然后从该差值中取出另一个5的样本(第一个样本中没有任何元素)

我理解的问题是,你希望第二个玩家不能选择第一个玩家选择的任何玩家

实现这一点的一种方法是建立一个新的玩家列表,其中不包括已经选定的玩家。您可以将i_开始5更改为以下内容

此示例使用列表理解创建尚未选定的玩家的新列表

import random

players = ('Giannis', 'LeBron', 'KD', 'Curry', 'Harden', 'AD', 'RW', 'Kawhi', 'Lillard', 'Kyrie', 'PG13', 'Klay', 'Jimmy', 'Dwyane', 'Blake', 'MJ', 'KarlAnthony', 'BenSim', 'JohnW', 'Melo')

c_starting5 = random.sample(players, k=5)
i_starting5 = random.sample([p for p in players if not(p in c_starting5)], k=5)

c = c_starting5
i = i_starting5

print(c)
print(i)

相关问题 更多 >