跳到主要内容

字符串的切片语法

基本切片

text = "Hello, World!"
print(text[1:5]) # 输出 'ello'

省略切片

print(text[:5])   # 输出 'Hello'
print(text[7:]) # 输出 'World!'

使用步长

print(text[::2])  # 输出 'Hlo ol!'

负索引

print(text[-5:-2])  # 输出 'orl'

反转字符串

print(text[::-1])  # 输出 '!dlroW ,olleH'

负步长

print(text[10:2:-1])  # 输出 'lroW ,o'

可以被切片的数据类型

字符串 (String)

字符串是字符的序列,因此可以使用切片来获取子字符串。

text = "Hello, World!"
print(text[7:12]) # 输出 'World'

列表 (List)

列表是项的序列,这些项可以是任意数据类型。可以使用切片来获取子列表。

numbers = [1, 2, 3, 4, 5, 6]
print(numbers[1:4]) # 输出 [2, 3, 4]

元组 (Tuple)

元组与列表类似,但它是不可变的。可以使用切片来获取子元组。

numbers_tuple = (1, 2, 3, 4, 5, 6)
print(numbers_tuple[2:5]) # 输出 (3, 4, 5)

字节数组 (bytearray) 和 bytes

bytes 类似于字符串,但它们包含字节而不是字符。可以使用切片来获取子数组或子字节序列。

byte_array = bytearray(b'Hello, World!')
print(byte_array[7:12]) # 输出 bytearray(b'World')

byte_string = b'Hello, World!'
print(byte_string[7:12]) # 输出 b'World'

数组 (array)

使用 array 模块创建的数组也可以使用切片来获取子数组。

from array import array
number_array = array('i', [1, 2, 3, 4, 5, 6])
print(number_array[1:4]) # 输出 array('i', [2, 3, 4])

注意,其他数据类型如集合 (set) 和字典 (dict) 不支持切片操作,因为它们没有索引或顺序。

规律

只有具有明确顺序或索引的数据结构(如字符串、列表、元组、字节数组等)支持切片操作。集合和字典没有索引,无法使用切片。