python,列表与元组,找到连续的数字

时间:2018-02-12 01:50:46

标签: python python-3.x list tuples

标题有点误导,但我无法在一行中形容它。

我有一个看起来像这样的列表。

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中执行此操作?

1 个答案:

答案 0 :(得分:2)

这是为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