2016-08-22 42 views

回答

1

好一個元素應該是空或空字符串。見以下實施例

實施例#1:

sort_array = ['abc', 'acd', 'abcd', ''] 
sort_array 
['abc', 'acd', 'abcd', ''] 
sorted(sort_array, key=lambda student: student[0]) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<stdin>", line 1, in <lambda> 
IndexError: string index out of range 

例如#2,我將sort_array採取以列表的列表,它匹配更多到您的sorted_by_name

>>> student_tuples = [ 
...   ['john', 'A', 15], 
...   [] 
... ] 
>>> sorted_by_name = sorted(student_tuples,key=lambda x:x[0]) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<stdin>", line 1, in <lambda> 
IndexError: list index out of range 

因此,我示例請求你請檢查你的輸入sort_array一次,如果它有任何空列表

0

這意味着至少有一件事情在你的清單是空的,所以doe沒有第一個元素。解決方法是簡單的,不通過的關鍵:

sorted_by_name = sorted(sort_array) 

sorted默認實現已經嘗試的第一個項目,那麼第二項,第三項,等等。當你傳遞一個鍵,它首先嚐試你的鑰匙,第一件。如果它發現兩個是相同的,它會自行檢查。它檢查第一個項目(再次),第二個項目,第三個項目等。換句話說,兩者都是相同的,除了提供一個鍵可能意味着第一個項目被檢查兩次,當然默認實現不會' t空的列表上出現錯誤。

相關問題