如何创建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)
来获取最后一个元素,但是对于一个以上的元素,它将无法正常工作。
答案 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