我知道如果我这样做:
>> a = [1,2,3,4]
>> a[:-1]
Output: [1,2,3]
可是:
>> a = [1]
>> a[:-1]
Output: []
虽然在这种情况下,第一个是最后一个,反之亦然。如果列表的长度为1,我怎样才能选择最后一项?
答案 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]
当列表包含一个或多个元素时,这适用于这两种情况。