字符串的切片语法
基本切片
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) 不支持切片操作,因为它们没有索引或顺序。
规律
只有具有明确顺序或索引的数据结构(如字符串、列表、元组、字节数组等)支持切片操作。集合和字典没有索引,无法使用切片。