我是一個新的Python編程。今天我練習排序列表。 我有這個代碼奇怪的輸出:在Python中打印一行後出現「無」字符串
輸出是:
Sort by length: ['c', 'perl', 'java', 'ruby', 'python', 'haskell']
None
所以,我不知道爲什麼「無」,在第二行顯示的原因。 任何人都可以幫助解決這個問題嗎?
非常感謝!
我是一個新的Python編程。今天我練習排序列表。 我有這個代碼奇怪的輸出:在Python中打印一行後出現「無」字符串
輸出是:
Sort by length: ['c', 'perl', 'java', 'ruby', 'python', 'haskell']
None
所以,我不知道爲什麼「無」,在第二行顯示的原因。 任何人都可以幫助解決這個問題嗎?
非常感謝!
因爲您正在打印lensort
函數結束處的列表而不是返回它。 Python中的函數隱式返回None
,如果它明確地不是return
。
def lensort(list):
list.sort(key=lambda x: len(x))
return list
順便說一句,可以簡化傳遞的鍵功能如下:list.sort(key=len)
此外,應避免使用類名作爲變量名,如list
,set
,dict
或object
:
def lensort(lst):
...
另外,不要使用'list'作爲變量名稱,陰影內置。 –
你幾乎可以雙倍打印清單。您不想在該功能中打印,因爲您已經在後面呼叫print
。相反,您需要return
列表,然後在撥打lensort
時讓print
函數打印返回的列表。
這裏有一個修正版本,應該有希望澄清我的意思:
# problem 13
def lensort(list):
list.sort(key=lambda x: len(x))
return list
print "Sort by length: ", lensort(['python', 'perl', 'java', 'c', 'haskell','ruby'])
的.sort
方法排序到位的列表。你不回報它的回報。此外,沒有lambda
需要:
>>> li=['python', 'perl', 'java', 'c', 'haskell','ruby']
>>> li.sort(key=len)
>>> li
['c', 'perl', 'java', 'ruby', 'python', 'haskell']
如果你想有一個新的排序列表,使用sorted
功能:
>>> sorted(['python', 'perl', 'java', 'c', 'haskell','ruby'], key=len)
['c', 'perl', 'java', 'ruby', 'python', 'haskell']
'lensort'不特意返回任何東西,所以它返回'None'。將'lensort'中的'print'改爲'return',它將除去'None'歡迎使用Python。 – mgilson
歡迎使用Python。第一條評論:不要命名變量'list'。這個名字有一個功能。 – dawg