Python,使用slice()对象获取最后一个元素

时间:2019-06-18 11:35:56

标签: python slice

如何创建slice()对象,使其包含列表/字符串的最后一个元素

s = 'abcdef'
s[slice(2,4)]

工作正常。
假设我想从第二到最后获取元素,相当于s[2:]

s[slice(2)]      # only gives first two elements, argument is interpreted as the end of the range
s[slice(2,)]     # same as above
s[slice(2, -1)]  # gives a range from second to the end excluding the last element
s[slice(2, 0)]   # gives empty as expected,  since end of range before the start

我可以用slice(-1, -2, -1)来获取最后一个元素,但是对于一个以上的元素,它将无法正常工作。

3 个答案:

答案 0 :(得分:1)

如果要包括最后一个元素,可以通过以下两种方式进行:

s[slice(2,6)]

或用len代替6

或者您也可以这样做:

s[slice(2,None)]

答案 1 :(得分:1)

您可以使用魔术方法__getitem__对其进行测试。可以使用slice(-1, None, None)获取最后一个对象:

s = 'abcdef'

class A:
    def __getitem__(self, v):
        print(v)

a = A()
a[-1:]

print("s[-1:] = ", s[-1:])
print("s[slice(-1, None, None)] = ", s[slice(-1, None, None)])

打印:

slice(-1, None, None)
s[-1:] =  f
s[slice(-1, None, None)] =  f

答案 2 :(得分:0)

Python序列(包括列表对象)允许建立索引。列表中的任何元素都可以使用从零开始的索引进行访问。如果index为负数,则索引的计数从结尾开始。我们想要列表中的最后一个元素,因此使用-1作为索引。

因此您可以使用:

s= "abcdef"
print(s[-1])

结果:

f