如何创建一个 slice() 对象,以便它包含列表/字符串的最后一个元素
s = 'abcdef'
s[slice(2,4)]
Run Code Online (Sandbox Code Playgroud)
工作正常。
假设我想获取从第二个到最后的元素,相当于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
Run Code Online (Sandbox Code Playgroud)
我可以使用 专门获取最后一个元素slice(-1, -2, -1),这对于多个元素将无法正常工作。
如果您想包含最后一个元素,可以通过以下两种方式执行此操作:
s[slice(2,6)]
Run Code Online (Sandbox Code Playgroud)
或将 6 替换为 len(s)
或者你也可以这样做:
s[slice(2,None)]
Run Code Online (Sandbox Code Playgroud)
你可以用魔法方法测试一下__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)])
Run Code Online (Sandbox Code Playgroud)
印刷:
slice(-1, None, None)
s[-1:] = f
s[slice(-1, None, None)] = f
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3724 次 |
| 最近记录: |