Python 字符串切片与反转详解

1. 基本切片语法

string[start:stop:step]
  • start:起始索引(包含),省略时默认为0
  • stop:结束索引(不包含),省略时默认为字符串末尾
  • step:步长(正数从左到右,负数从右到左),省略时默认为1

2. 反转字符串 n[::-1]

2.1 语法解析

n = "Python"
reversed_n = n[::-1]  # 'nohtyP'
  • startstop 都省略 → 处理整个字符串
  • step = -1 → 从右向左逐步取值

2.2 等效写法

n = "Python"
reversed_n = n[-1::-1]    # 明确从最后一个字符开始
reversed_n = n[None:None:-1]  # 显式使用None表示默认值

3. 切片步长详解

步长方向效果示例
1正向从左到右顺序选取n[::1] → “Python”
2正向隔一个取一个n[::2] → “Pto”
-1反向反转字符串n[::-1] → “nohtyP”
-2反向反向隔一个取一个n[::-2] → “nhy”

4.1 判断回文字符串

def is_palindrome(s):
    return s == s[::-1]

print(is_palindrome("madam"))  # True
print(is_palindrome("hello"))  # False

4.2 获取字符串最后N个字符

n = "Hello World"
last_3 = n[-3:]      # 正序获取最后3个字符: 'rld'
last_3_rev = n[:-4:-1] # 逆序获取最后3个字符: 'dlr'

4.3 交替反转字符串

s = "abcdef"
print(s[::2][::-1] + s[1::2][::-1])  # 'fdbeca'

ps:s[1::2] → 获取奇数索引(从1开始,步长2)的字符:

4. 实际应用示例

5. 注意事项

  1. 索引越界时不会报错,会自动处理为有效范围

    "Python"[100:]  # 返回空字符串 ''
    
  2. 字符串切片创建的是新对象(字符串不可变)

  3. 同样适用于列表和其他序列类型

    [1, 2, 3][::-1]  # 返回 [3, 2, 1]
    
  4. 性能考虑:对于大数据量,[::-1]''.join(reversed(s))稍快

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值