def grouper(iterable, n, fillvalue=None): "Collect data into fixed-length chunks or blocks" # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx" args = [iter(iterable)] * n return zip_longest(*args, fillvalue=fillvalue)
這題要把 戰鬥力P 反著做,加一個反轉即可
grouper(reversed(戰鬥力P), n, fillvalue=0)
包裝成解答的樣子可能會想用enumerate(grouper(),start=1),但套用max上去,找出來的答案會是組別較小的(題目要組別越大越好)
換個方式包就比較沒這個困擾,例如zip(grouper(), count(1))。把戰鬥力放前面,組別會自己找最大的,count也在itertools裡面
總結起來大概長這樣
戰鬥力, 組別 = max(zip(grouper(reversed(戰鬥力P), n, fillvalue=0), count(1)))
print(組別, 戰鬥力) # 在輸出的時候,自己將兩個組別戰鬥力互換就會是題目的要求了