MST

星途 面试题库

面试题:Python字符串切片中负数索引的边界处理

对于字符串s = 'hello world',请使用负数索引切片,使得切片结果为'world',并解释切片中负数索引值的含义以及为什么这样能得到该结果。另外,如果要从后往前每隔一个字符取一个,直到字符串的前半部分(不包含中间字符,如果总长度为奇数),该如何实现并说明索引计算逻辑。
28.8万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
  1. 获取'world'的切片操作及解释
    • 代码:s = 'hello world',切片操作 s[-5:] 可以得到 'world'
    • 负数索引值含义:在Python字符串中,负数索引表示从字符串的末尾开始计数,-1 表示最后一个字符,-2 表示倒数第二个字符,以此类推。在 s[-5:] 中,-5 表示从字符串末尾开始数第5个字符,: 表示从这个位置开始截取到字符串末尾,所以能得到 'world'
  2. 从后往前每隔一个字符取一个,直到字符串的前半部分(不包含中间字符,如果总长度为奇数)的实现及索引计算逻辑
    • 代码实现:
s = 'hello world'
length = len(s)
mid = length // 2 if length % 2 == 0 else length // 2 - 1
result = s[-1:mid - 1:-2]
print(result)
  • 索引计算逻辑:
    • 首先计算字符串的长度 length
    • 然后确定截取的终点位置 mid,如果字符串长度 length 是偶数,midlength // 2;如果是奇数,midlength // 2 - 1,这样可以保证不包含中间字符。
    • s[-1:mid - 1:-2] 中,-1 是从字符串末尾开始,也就是最后一个字符位置,mid - 1 是截取的终点位置(不包含),-2 表示步长为 -2,即从后往前每隔一个字符取一个。