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

时间:2018-01-02 08:21:32

标签: python list slice

我知道如果我这样做:

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

Output:  [1,2,3]

可是:

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

Output:  []

虽然在这种情况下,第一个是最后一个,反之亦然。如果列表的长度为1,我怎样才能选择最后一项?

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:3)

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

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

您也可以使用短路:

a[:-1] or a[:]

答案 2 :(得分:0)

[ - 1:] 表示给我列表中的最后一个元素。您可以使用or语句,它将为您提供值:

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

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

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