我試圖分裂名單,並將其複製到2名獨立的名單和我得到: 「類型錯誤:‘NoneType’對象未標化」Python列表「NoneType」錯誤
class example(object):
def ex(self,nums):
n = int(len(nums)/2)
nums1 = nums[:n]
nums2 = nums[n:]
我試圖分裂名單,並將其複製到2名獨立的名單和我得到: 「類型錯誤:‘NoneType’對象未標化」Python列表「NoneType」錯誤
class example(object):
def ex(self,nums):
n = int(len(nums)/2)
nums1 = nums[:n]
nums2 = nums[n:]
你有沒有驗證nums確實是一個列表,並且n有一個值?如果您可以提供該代碼,將來會很有用,因此用戶可以提供更好的幫助。
此外,我不確定複製和粘貼代碼時是否只是一個錯誤,但如果它在同一行上則不起作用。
順便說一下,python使用None而不是null這就是爲什麼@Jeff Mercado在他的評論中提到了這一點。
我有示例代碼的工作:檢查
nums = [1, 2, 3, 4]
n = 2
nums1 = nums[:n]
nums2 = nums[n:]
print(nums1)
print(nums2)
Output:
[1, 2]
[3, 4]
編輯如果列表爲空
檢查隱(PEP 8推薦的方式):
if not nums:
print("Nums is empty")
檢查明確(然而,這是蟒蛇皺眉):
if len(nums) == 0:
print("Nums is empty")
有關內置非類型的更多信息,請參閱python 2.x的文檔here和python 3.x的here文檔。
再次編輯,現在你已經編輯完成您最初的問題..
class Example(object):
def ex(self, nums):
# Either use an if check or try/except
if not nums:
print("Nums is empty")
try:
n = int(len(nums)/2)
nums1 = nums[:n]
nums2 = nums[n:]
print(n)
print(nums1)
print(nums2)
except TypeError:
print("Exception: You would put your exception code here")
example = Example()
num_list1 = [1, 2, 3, 4]
example.ex(num_list1)
num_list2 = []
example.ex(num_list2)
num_list3 = None
example.ex(num_list3)
輸出:
2
[1, 2]
[3, 4]
Nums is empty
0
[]
[]
Nums is empty
Exception: You would put your exception code here
補充建議:
1.要堅持正常的慣例,利用你的班級名稱。這將有助於區分它與正常的函數調用和對象實例化。
由於您上傳了全新的代碼段,因此再次進行了編輯。我希望我給你的信息有所幫助。我現在推薦玩這個遊戲來幫助你學習。 –
謝謝你的建議 – spunkyquagga
樂於幫忙,歡迎來到Stack Overflow。如果此答案或任何其他人解決了您的問題,請將其標記爲已接受。 –
'nums'不是一個列表......'nums'是'None' ... –
nums變量在分割之前看起來像什麼? – jmugz3
數字將作爲參數傳遞給函數。所以從技術上講,在值傳遞之前它將是空的。我如何處理這種情況? – spunkyquagga