gpt4 book ai didi

python - Python 中的合并排序 - `int` 对象不可迭代

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:57:20 25 4
gpt4 key购买 nike

这是 Python 中的合并排序实现。调用 merge_arrays() 函数时出现错误 int object is not iterable。任何建议将不胜感激。

arr = [1,5,4,7,6,8,3,2,9]

def merge_arrays(_arr_left, _arr_right):
sorted_arr = []
left, right = 0, 0

for i in range(0, len(arr)):
if (_arr_left[left] < _arr_right[right]):
sorted_arr.extend(_arr_left[left])
left += 1
else:
print _arr_right[right], right
sorted_arr.extend(_arr_right[right])
right += 1

return sorted_arr

def merge_sort(_arr):
if (len(_arr) <= 1):
return _arr

_arr_left = merge_sort(_arr[:len(_arr)/2])
_arr_right = merge_sort(_arr[(len(_arr)/2):])

return merge_arrays(_arr_left, _arr_right)

try:
merge = merge_sort(arr)
print merge
except Exception as e:
print e

最佳答案

该特定错误来自于您说的是 sorted_array.extend(_arr_left[left])。您要求 sorted_array 将“可迭代”_arr_left[left] 的每个元素附加到它。但是 _arr_left[left] 并不是真正可迭代的,它只是 _arr_left 中索引 left 处的任何 int。

如果您不try 然后except 并打印Exception,您将看到一个完整的堆栈跟踪,它会告诉您哪个线路不好。

  File "merge.py", line 27, in <module>
merge = merge_sort(arr)
File "merge.py", line 22, in merge_sort
_arr_left = merge_sort(_arr[:len(_arr)/2])
File "merge.py", line 22, in merge_sort
_arr_left = merge_sort(_arr[:len(_arr)/2])
File "merge.py", line 25, in merge_sort
return merge_arrays(_arr_left, _arr_right)
File "merge.py", line 9, in merge_arrays
sorted_arr.extend(_arr_left[left])
TypeError: 'int' object is not iterable

所以你可以看到问题是从第9行开始的。你也可以插入import pdb; pdb.set_trace() 在您认为异常出现以运行 python debugger 之前并逐步查看程序的进度以查看异常出现的位置。

关于python - Python 中的合并排序 - `int` 对象不可迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32420006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com