列表切片,如果列表长度为1,则获取最后一项

问题描述 投票:-2回答:3

我知道如果我这样做:

>> a = [1,2,3,4]
>> a[:-1]

Output:  [1,2,3]

但:

>> a = [1]
>> a[:-1]

Output:  []

虽然在这种情况下,第一个是最后一个,反之亦然如果列表长度为1,如何选择最后一项?

python list slice
3个回答
3
投票

你不得不以某种方式处理特殊情况。一种方法是使用max并避免使用否定索引:

a[:max(1, len(a) - 1)]

您也可以使用短路:

a[:-1] or a[:]

5
投票

你可以使用简单或三元if-else

slc = a[:] if len(a) == 1 else a[:-1]

0
投票

[-1:]表示给我列表中的最后一个元素。你可以使用or语句,它会得到你的价值:

ls = [1, 2, 3]
v = ls[-1:] or ls[:]
v
[3]

ls = [1]
v = ls[-1:] or ls[:]
v
[1]

当列表包含一个或多个元素时,这适用于这两种情况。

© www.soinside.com 2019 - 2024. All rights reserved.