我對下面的代碼執行完全感到困惑,
a= [10,30,4]
a = a.sort()
r = len(a)- 1
print (r)
當上述代碼被執行時,我得到
r = len(a) - 1 TypeError: Type 'NoneType' 的物件沒有 len()
然而,如果我在不進行排序的情況下找到長度,或者在找到長度后對陣列進行排序時,代碼運行良好。這有什么原因嗎?
uj5u.com熱心網友回復:
a.sort()是一個原地操作。它在原地修改list,并且不回傳任何東西。通過在你的 python 解釋器中輸入 help(list.sort) 來查看 list.sort 的檔案。
>>> help([].sort)
對內置函式sort的幫助。
sort(*, key=None, reverse=False) 方法的內置函式。
對串列進行升序排序,并回傳 None.。
排序是就地的(即串列本身被修改)和穩定的(即兩個相等的元素的順序被保持)。
兩個相等元素的順序被保持)。)
所以重點是,你不應該指定 listobject.sort() 的回傳值,因為它將總是回傳 None
uj5u.com熱心網友回復:
函式sort回傳的值是None
因此,當你試圖分配a = a.sort()時,它與a = None
這里參考了排序基礎知識
。你的代碼應該是這樣的
a= [10,30,4]
a.sort()
r = len(a)- 1
print (r)
uj5u.com熱心網友回復:
除了其他的答案,如果你想要一個非原位的函式,那么你可以運行:
a = sort of a,
a = sort of a,
a = sort of a,
標籤: 下一篇:EXCEL:如果"日期欄"中的日期在1月10日到2月10日之間,則在"月份欄"中回傳"JAN"--其余年份以此類推。
a = sort of a。
a = sorted(a)
