关于python:如何找到列表的最大值,然后将最大值存储在新列表中

How find the max of a list and then store the max in a new list

我试图找到"滚动列表"的最大值,但我所尝试的一切都不起作用。我不太擅长编码,我老师给我的指导也不太清楚。我还必须为每个玩家将"rollllist"重置为空,我很困惑。请有人帮忙。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
    import random
    class Player:
        def __init__(self,name ):
            self.name = name
            self.dice = []

        def __str__(self):
            return self.name
        def roll_Dice(self):
            rollDice = random.randint(1, 6)
            return rollDice

    rounds = 1
    rollList = []

    newplayer = []
    newplayer.append(Player("CAT:"))
    newplayer.append(Player("DOG:"))
    newplayer.append(Player("LIZARD:"))
    newplayer.append(Player("FISH:"))

    for rounds in range(1,4):
        print("-----------------")
        print("Round" + str(rounds))
        for p in newplayer:
            print(p)
            for x  in range (4-rounds):
                rollDice = random.randint(1, 6)
                rollList.append(rollDice)
                print(rollList)
                max.pop(rollList)
                print(rollList)

            rollList.clear()
            len(rollList)


max.pop(rollList)相当没有意义。它试图调用不存在的内置max函数的pop方法。

您只需调用max本身就可以获得最大值:

1
maxRoll = max(rollList)

如果您想删除该卷,您可以(尽管似乎不需要,因为您将清除列表):

1
rollList.remove(maxRoll)

如果要将最大值追加到其他列表:

1
anotherList.append(maxRoll)


我报告了一些解决错误的建议:AttributeError: 'builtin_function_or_method' object has no attribute 'pop'

只需将max.pop(rollList)改为max(rollList)

然后,您只有一个元素的列表,因为您在for rounds in range(1,4):循环中调用方法,而不让列表中填充其他元素。在每个循环中,您也会调用clear

另外,for x in range (4-rounds):不是必需的,它是一个嵌套循环。

你在打印名单,而不给每个人分配掷骰子的价值,那么谁是赢家?

最后,您将roll_dice()定义为person的实例方法,那么为什么不使用它呢?那么,为什么不用rollList.append(p.roll_Dice())代替:

1
2
rollDice = random.randint(1, 6)
rollList.append(rollDice)

希望这能有所帮助。


使用max()函数可以找到列表的最大值:

1
2
3
mylist = [1,2,4,5,6,7,-2,3]

max_value = max(mylist)

现在最大值等于7。可以使用append()方法将其添加到新列表中:

1
2
new_list = []
new_list.append(max_value)

那么新的_列表将是[7]