[英]python, list with tuples, find consecutive numbers
標題有點令人誤解,但我無法真正描述它。
我有一個看起來像這樣的清單。
a = [(4, 2), (4, 3), (2, 1), (1, 0), (1, 4)]
使用此代碼,該列表已按元組的第一項排序。
a.sort( key = lambda x: x[0], reverse = True )
(我只是說列表已經排序,因此無需排序)
假定元組的第一項是撲克玩家的分數,第二項是每個撲克玩家的名字。 因此,上面的列表與此相同:
[(分數= 4,玩家2),(分數= 4,玩家3),(分數= 2,玩家1),(分數= 1,玩家0),(分數= 1,玩家= 4)]
有5個玩家,每個玩家的得分可以相同或不同。
我想根據他們的得分來評估球員,並希望在出現平局的情況下打印結果(因此,
Player 2 ties
Player 3 ties
Player 0 ties
Player 4 ties
玩家2和3得分相同(得分= 4),並列並列。 同樣,玩家0和4並列,但由於他們的得分(得分= 1)低於玩家2和3,因此它們被打印在玩家2和3下方。
如何在Python中執行此操作?
這是為itertools.groupby
量身定制的問題:
>>> from itertools import groupby
>>> from operator import itemgetter
>>> L = [(4, 2), (4, 3), (2, 1), (1, 0), (1, 4)]
>>> for key, group in groupby(L, itemgetter(0)):
... group = list(group)
... if len(group) > 1:
... for k, player in group:
... assert k == key
... print(f'Player {player} ties')
... print()
...
Player 2 ties
Player 3 ties
Player 0 ties
Player 4 ties
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.