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

时间:2019-01-20 02:28:14

标签: python list append max

我正在尝试查找“ rollList”的最大值,而我尝试过的所有方法都无法正常工作。我对编码不是很好,我的老师给我的指示也不太清楚。我还必须将每个玩家的“ rollList”重置为空,我非常困惑。请帮助。


    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)

3 个答案:

答案 0 :(得分:1)

max.pop(rollList)行毫无意义。它尝试调用内置pop函数的max方法,该方法不存在。

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

maxRoll = max(rollList)

如果您要删除该卷,则可以(尽管它似乎没有必要,因为您将清除列表):

rollList.remove(maxRoll)

如果要将最大值附加到另一个列表:

anotherList.append(maxRoll)

答案 1 :(得分:0)

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

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

max_value = max(mylist)

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

new_list = []
new_list.append(max_value)

然后new_list将是[7]

答案 2 :(得分:0)

我报告了一些解决您可能遇到的错误的建议: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())代替:

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

希望这会有所帮助。