问:

split = int(len(x)/2)有错吗

答:
这个语句 int(len(x)/2) 有误,详细解释如下:
1. len(x) 的返回值是 x 的长度,是一个整数。但是在 Python 中,整数除法默认采用的是整除,会直接扔掉余数。
2. 举例来说,如果 x 是 [1, 2, 3, 4, 5],它的长度 len(x) 是 5。5/2 的结果是 2,扔掉余数 1。
3. 所以 split = int(len(x)/2) 的意思是,要将 x 分成两份,但实际上分成的索引是 2,只分成前两份,后三份被忽略了。
4. 正确的写法应该是 split = len(x)//2。// 表示整数除法,会直接扔掉余数,得到我们想要的结果。
5. 也可以写成 split = len(x)/2.0 或者 split = len(x)/2. ,让其中一个数变成浮点数,那么除法结果也会是浮点数,可以获得余数。然后取这个结果的整数部分,用 int() 函数。
6. 所以如果 x 是 [1, 2, 3, 4, 5],正确的结果应该是:
int(len(x)/2.0) 或者 len(x)//2  —— 结果都是 2
split = [1, 2]
而 int(len(x)/2) 的结果是:
split = [1, 2] 
忽略了 index 2 和 3 后的元素。
所以总结来说,这个语句存在整数除法失去余数的错误,应该改用浮点数除法或者整数除法//来 fix 这个 bug。