【发布时间】:2021-03-08 06:19:15
【问题描述】:
我在 python 中实现了一个常见的合并排序算法,如下所示,但出现了意外的类型错误。
from typing import List
def merge(arr1: List[int], arr2: List[int]) -> List[int]:
sorted_arr = []
i, j = 0, 0
while i < len(arr1) and j < len(arr2):
if arr1[i] < arr2[j]:
sorted_arr.append(arr1[i])
i = i + 1
else:
sorted_arr.append(arr2[j])
j = j + 1
sorted_arr += arr1[i:]
sorted_arr += arr2[j:]
def merge_sort(arr: List[int]):
if len(arr) == 1:
return arr
mid = len(arr) // 2
left_arr = merge_sort(arr[:mid])
right_arr = merge_sort(arr[mid:])
return merge(left_arr, right_arr)
错误是这样说的:
while i < len(arr1) and j < len(arr2):
TypeError: object of type 'NoneType' has no len()
我不知道为什么while 循环会出现类型错误。谁能帮我解决这个问题?谢谢。
【问题讨论】:
-
if len(arr) == 1:应该是if len(arr) <= 1:以允许空列表。
标签: python typeerror mergesort