2012-05-01 15 views
3

我目前的計劃是,以確定哪些是在一些Tkinter列表框的第一項突出了使用.curselection(),所有產生的元組組合成一個列表,製作這樣的:的Python:在元組的名單得到最低整數

tupleList = [(),(), ('24', '25', '26', '27'),(),(),(),()] 

我想知道如何確定最低的整數。使用.min(tupleList)只返回(),這是列表中最低的條目,但是我正在尋找一個返回值爲24的方法。

什麼是正確的方法來獲取列表中任何元組中的最小整數?

+1

而是追加項目列表,使用'.extend'方法。你將得到一個整數列表,然後使用'min()'來輕鬆找到最小值。 – rubik

回答

6
>>> nums = [(),(), ('24', '25', '26', '27'),(),(),(),()] 
>>> min(int(j) for i in nums for j in i) 
24 
+0

+1似乎比我的解決方案更優雅。 – jamylak

+0

謝謝rubik和jamylak,兩種解決方案都非常出色。 非常感謝gnibbler,這是一種完美的解決方案,無需編輯任何東西。 – Kryptonite

+0

@jamylak,如果從生成器返回'nums',你的解決方案將有意義。特別是如果它處理大量數據 –

6
>>> from itertools import chain 
>>> nums = [(),(), ('24', '25', '26', '27'),(),(),(),()] 
>>> min(map(int,chain.from_iterable(nums))) 
24 
0
>>> min(reduce(lambda x, y: x + y, nums)) 
+0

如果nums具有像「100」這樣的數字,則不起作用,因爲它是按字母順序檢查的,因爲它仍然是「str」。在nums = [(),(),('24','25','26','27'),(),(),(),(),('100',)] '例如。對於使用'reduce'也要小心,因爲它在Python中不被喜歡,因爲幾乎每個任務都有更好的選擇。 – jamylak

+0

其實'100'小於'24',我不明白你的意思。 – Vidul

+1

我很確定他想檢查字符串作爲數字,因爲他想找到最小值。他在帖子中提到:「確定最低整數」# – jamylak

相關問題