在Python迭代期间更改列表中对象的属性

2024-09-30 06:34:06 发布

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

在Python中,我试图在脚本中使用嵌套for循环来迭代对象属性列表。属性的迭代副本在嵌套迭代期间重置。如何修改被引用对象的属性,使其不会重置

class Player:
    def __init__(self, index, name, rating, sex, team, bench):
        self.index = index
        self.name = name
        self.rating = rating
        self.sex = sex
        self.team = team
        self.bench = bench

player1 = Player(1, "jasan", 971, "male", "MK", True)
player2 = Player(2, "Jaimen", 972, "male", "MK", True)
player3 = Player(3, "Jessica", 973, "female", "MK", True)
player4 = Player(4, "Justin", 904, "male", "MK", True)

opponent1 = Player(1, "Marc", 91, "male", "OPP", True)
opponent2 = Player(2, "Tom", 92, "male", "OPP", True)
opponent3 = Player(3, "Josh", 93, "male", "OPP", True)
opponent4 = Player(4, "Randy", 94, "male", "OPP", True)

mkroster = [player1, player2, player3, player4]
opproster = [opponent1, opponent2, opponent3, opponent4]

for x1 in mkroster:
    for y1 in opproster:
        x1.bench = False
        y1.bench = False
        for y2 in opproster:
            for x2 in mkroster:
                if x2.bench and y2.bench:
                    print(x1.bench, x2.bench)
                    match2 = matchup(x2.rating, y2.rating)
                    print("Round 2", x2.rating, y2.rating)
                    x1.bench = False
                    y1.bench = False
                    x2.bench = False
                    y2.bench = False
                    for x3 in mkroster:
                        for y3 in opproster:
                            if x3.bench and y3.bench:

    

如何修改对象属性(player1.bench)以匹配迭代值(x.bench


Tags: inselffalsetruefor属性maleplayer
1条回答
网友
1楼 · 发布于 2024-09-30 06:34:06

在我看来,您正试图完成for循环的工作。正如Chris Schmitz所说,它看起来像一个反模式。查看this可以更好地了解for循环如何将列表中的每个值分配给变量,例如x1

[编辑]我不确定您的代码试图做什么,但下面是一些代码的片段和解释,可能会有所帮助:

mkroster = [...]

opproster = [...]

for x1 in mkroster:
    for y1 in opproster:
        print(x1.name, y1.name)

这个代码片段打印出来的是

jasan, Marc
jasan, Tom
jasan, Josh
jasan, Randy
Jaimen, Marc
...

所以x1和y1已经被一次一个地分配给每个玩家对象。如果你想拥有更复杂的支架,而不仅仅是花名册,那么你需要更多的火力

相关问题 更多 >

    热门问题