2015-11-07 75 views
-1

內從列表中最小的項目比方說,我有一個名爲數據列表。的Python:獲取一個列表

data = [[3.59, ['foo']], [2.34, ['bar', 'foo']]] 

現在我想從數據列表中找到索引,索引0處數據內的列表中的最小數目是最小的。因此,這將是在我的例子0或1,但因爲2.34是小於3.59,它將返回1

編輯:

這就是我想出了,但我不認爲這是真正有效的ATM。

data = [[3.59, ['foo']], [2.34, ['bar', 'foo']]] 
smallest_num_list = [] 

for list in data: 
    for i in list[:1]: 
     smallest_num_list.append(i) 

for list in data: 
    for i in list[:1]: 
     if i == min(smallest_num_list): 
      result = data.index(list) 

print result 
+0

你能告訴我們你嘗試過什麼?我們不會爲您編寫代碼。 – utdemir

+1

@ utdemir當然,我會編輯它。 – Gewoo

回答

2

你可以使用enumerate()

idx_min, val_min = min(enumerate(data), key=lambda i, x: x[0]) 
+0

如果有幾個項目具有相同的最小值,它會工作嗎? – hyst329

+0

@ hyst329,它會返回第一個。 – utdemir

+0

@ hyst329這將起到'min()'函數的作用,這意味着這將返回遇到的第一個最小值。 – Delgan

-2

這將工作和返回這樣最小的指數列表(如多於1)

[i for i, e in enumerate(list) if e[0] == min([d[0] for d in list])] 
+0

這有'O(n ** 2)'複雜性,這是非常糟糕的,因爲問題可以很容易地在線性時間內解決。 – utdemir

+0

@utdemir可以計算最小值只有一次,所以沒有二次複雜 – hyst329

+0

@ hyst329:你*可*,但您的代碼不。從列表comp找到最小值。 – DSM

相關問題