簡體   English   中英

python,列出元組,找到連續的數字

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM