Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.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_Python 3.x - Fatal编程技术网

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

Python 使函数为单个元组工作,为元组列表工作,python,python-3.x,Python,Python 3.x,我有一个函数 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,

我有一个函数

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])
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])]
for sailor,races in list_of_sailors:
     series_score(sailor, races)
通过删除列表中的最高数字,将其转换为

sailor = ("bob", [2, 4, 1, 1, 2])
我如何调整函数来处理这样的元组列表

sailor = ("bob", [2, 4, 1, 1, 2, 5])
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])]
for sailor,races in list_of_sailors:
     series_score(sailor, races)

你可以这样做

sailor = ("bob", [2, 4, 1, 1, 2, 5])
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])]
for sailor,races in list_of_sailors:
     series_score(sailor, races)

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

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

适用于水手列表中的水手:系列评分(水手、比赛、弃置)
?当
Eva
列表中有多个
5
时,该怎么办?您希望全部删除还是仅删除1?可能会将此更改为
def series_分数(从比赛到弃置,*水手)
,因此它仍然适用于单个水手。嗯,在我进行更改时,这似乎不起作用。它仍然索引得分列表的元素,而不是列表本身。这对一个水手来说很有效,但它很难看<代码>系列分数([['Clare',[3,1,1,2,1,1]]],2)