2013-04-30 61 views
0

我有一個非常特殊的問題,我有一副牌。該套牌是元組列表的列表,每個內部列表是一個具有卡組元組(套裝,值)的套裝,從最小到最大(2-Ace)排序。我想在甲板上找到最小的牌。所以基本上我想從每件西裝中拿出第一件物品,並找到最小的一件。由於缺乏可怕的循環,什麼是最Python的方法來做到這一點?Python,列表中的第一個對象中的最小值

+1

你可以把一些代碼,以便我們可以幫助你更好的方式嗎? s like like也許你可以使用min內建函數 – Twissell 2013-04-30 14:36:10

回答

3

min是一個關鍵功能。您可以使用此獲得的第一個元素使用它作爲比較:

min(my_list, key=lambda x: x[0]) 
+0

剛剛測試過你的代碼,但我的描述中可能還不夠清楚,但實際上我們所關注的是數字,所以你的代碼應該是min(my_list,key = lambda x:x [0] [1]) – EasilyBaffled 2013-04-30 14:47:08

+0

你沒有給出一個例子,所以我們不得不猜測你的數據結構。 – Matthias 2013-04-30 15:09:58

0
min(suit[0] for suit in deck, key=lambda suit,value: value) 

既然你注意的是,西裝進行排序,你可以簡單地得到每種花色列表的第一個項目,以獲得最小該訴訟的價值;然後將使用min()的第一個值與指定的key參數進行比較以查看每個的值部分。

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] 
相關問題