1

我有一个非常特殊的问题,我有一副牌。甲板是元组列表的列表,每个内部列表都是带有卡片元组(套装,价值)的套装,从小到大排序(2-Ace)。我想找到一副牌中最小的牌。所以基本上我想从每件衣服中取出第一个对象,然后找到最小的。没有一个丑陋的for循环,最pythonic的方法是什么?

4

3 回答 3

4

min具有关键功能。您可以使用它来获取第一个元素以将其用作比较:

min(my_list, key=lambda x: x[0])
于 2013-04-30T14:39:23.923 回答
0
min(suit[0] for suit in deck, key=lambda suit,value: value)

由于您注意到西装是排序的,您可以简单地获取每个西装列表的第一项以获得该西装的最小值;然后将这些第一个值min()key指定的参数进行比较,以查看每个值的部分。

于 2013-04-30T14:39:57.607 回答
0

让我们假设甲板列表创建如下:

TheHearts = TheSpades = TheDiamonds = TheClubs = [2,3,4,5,6,7,8,9,10,"j","q","k","a"]
TheDeck = [TheHearts, TheSpades, TheDiamonds, TheClubs]

以下行可以为您提供第一个列表的第一个对象:

print TheDeck[0][0]

或者即使您制作字典,也可以使用名称而不是数字:

TheHearts = TheSpades = TheDiamonds = TheClubs = [2,3,4,5,6,7,8,9,10,"j","q","k","a"]
TheDeck = {'TheHearts':TheHearts, 'TheSpades':TheSpades, 'TheDiamonds':TheDiamonds, 'TheClubs':TheClubs}
print TheDeck['TheHearts'][0]
于 2013-04-30T15:02:05.670 回答