切片列表后未显示最后一个值

Last value not showing up after slicing list

Av = [32,5,3,1,3,4,5]
A = Av[0:int(len(Av)/2)]
B = Av[int(len(Av)/2):-1]
print(A,B)

当我运行这段代码时,我得到

[32, 5, 3] [1, 3, 4]

Av 的最后一个值为 5。但它没有出现在列表 B..

在python中,当你使用索引切片Av[a:b]时,你得到从位置a(包括)到位置b(排除)的元素。因为 -1 指的是最后一个位置,所以如果你这样做 Av[a:-1],最后一个元素将不会被包括在内。

如果要包含最后一个元素,只需省略最后的索引-1,即使用Av[a:]。你的代码应该是这样的:

Av = [32,5,3,1,3,4,5]
A = Av[0:int(len(Av)/2)]
B = Av[int(len(Av)/2):]
print(A,B)

看看 答案。它非常清楚地解释了索引切片是如何工作的。

当您使用切片 [x:-1] 时,它不包含索引 -1(最后位置)处的值,因为它是非包含的。

相反,使用 [x:],这将给出一个包含 x 及其右侧所有值的切片:

B = Av[int(len(Av)/2):]

输出:

>>>B
>>>[1, 3, 4, 5]

这是因为你已经将列表切片到-1,这意味着数组的最后一个元素并被排除在切片数组之外。

要将数组切片到最后,请将切片代码的末尾部分留空。像这样-

B = Av[int(len(Av)/2):]