Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在两个列表中随机划分项目_Python - Fatal编程技术网

Python 在两个列表中随机划分项目

Python 在两个列表中随机划分项目,python,Python,我必须使用类和继承从列表中获取项目,并将它们平均随机附加到两个列表中,所以我不知道如何将它们随机附加到列表中 import random players = ['a', 'b', 'c','d','e', 'f'] A = [] B = [] teams = [] class Human: def __init__(self,name): self.name = name class Player(Human): def __init__(sel

我必须使用类和继承从列表中获取项目,并将它们平均随机附加到两个列表中,所以我不知道如何将它们随机附加到列表中

import random

players = ['a', 'b', 'c','d','e', 'f']

A = []
B = []
teams = []



class Human:
    def __init__(self,name):
        self.name = name



class Player(Human):

    def __init__(self, name, team):
        self.team = team
        Human.__init__(self, name)

for i in range(6):
    p = Player(random.choice(players))
    a = p.team
    print(p.name)
    players.remove(p.name)
print(teams)

您的代码将为您提供相同的玩家:

为了避免这种情况,可以在您的全名上使用
random.sample(players,k=len(players))
(这将返回一个新的无序列表-
players
未修改)或
random.shuffle(players)
将其放置到位。然后,将结果分为两部分,并根据该数据创建团队:

您可能应该重载类的
\uuu repr\uuuu(self)
方法,以使输出更整洁

import random

class Human:
    def __init__(self,name):
        self.name = name
    def __str__(self):
        return f"{self.name}"
    def __repr__(self): return str(self)

class Player(Human):
    def __init__(self, name, team):
        super().__init__(name)
        self.team = team
    def __str__(self):
        return f"{self.name} in team {self.team}" 
    def __repr__(self): return str(self)

players = ['a', 'b', 'c','d','e', 'f']
random.shuffle(players)  # inplace shuffling

player_length = len(players) // 2 # make sure you got even player counts - else uneven teams
A = [Player(k,"A") for k in players[:player_length]]  # first 3 are Team A
B = [Player(k,"B") for k in players[player_length:]]  # rest is Team B
teams = [A,B]

print(teams)
输出:

[[d in team A, f in team A, b in team A],[a in team B, e in team B, c in team B]]
Doku:


预期的输出是什么?洗牌,然后将列表减半。您的代码将为您提供重复的玩家。@DanielMesejo two Lists希望看到确定中间索引的编程方法,而不是硬编码3
[[d in team A, f in team A, b in team A],[a in team B, e in team B, c in team B]]