使函数为单个元组工作,为元组列表工作

2024-09-27 17:55:16 发布

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

我有一个函数

def series_score(sailor, races_to_discard):
    places = sailor[1]
    for i in range(races_to_discard):
        places.remove(max(places))
    print(places)
    sum_of_places = sum(places)
    print(sum_of_places)

这样修改元组

sailor = ("bob", [2, 4, 1, 1, 2, 5])

通过删除列表中的最高数字

sailor = ("bob", [2, 4, 1, 1, 2])

如何调整函数以处理这样的元组列表

list_of_sailors = [('Clare', [3, 1, 1, 2, 1, 1]), ('Bob', [2, 2, 3, 1, 2, 3]), ('Alice', [1, 3, 2, 3, 3, 2]), ('Eva', [4, 5, 4, 4, 5, 5]), ('Dennis', [5, 4, 5, 5, 4, 4])]

Tags: ofto函数列表defdiscardseriesbob
2条回答

只需包含另一个循环。这里,我取每个数组中最高的两个数字:

def series_score(sailors, races_to_discard):
    for sailor in sailors:
        places = sailor[1]
        for i in range(races_to_discard):
            places.remove(max(places))
        print(places)
        sum_of_places = sum(places)
        print(sum_of_places)

print(series_score([('Clare', [3, 1, 1, 2, 1, 1]), ('Bob', [2, 2, 3, 1, 2, 3]), ('Alice', [1, 3, 2, 3, 3, 2]), ('Eva', [4, 5, 4, 4, 5, 5]), ('Dennis', [5, 4, 5, 5, 4, 4])], 2))
>>>[1, 1, 1, 1]
   4
   [2, 2, 1, 2]
   7
   [1, 2, 3, 2]
   8
   [4, 4, 4, 5]
   17
   [4, 5, 4, 4]
   17

你可以这样做

for sailor,races in list_of_sailors:
     series_score(sailor, races)

相关问题 更多 >

    热门问题