MST

星途 面试题库

面试题:Python切片在多维数据结构中的应用

有一个二维列表`matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]`,请通过切片操作获取由每行的第一个和最后一个元素组成的新列表,即`[[1, 3], [4, 6], [7, 9]]`,并阐述切片操作在多维数据结构中的应用规则和需要注意的地方。
45.1万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
new_list = [[sub_list[0], sub_list[-1]] for sub_list in matrix]
print(new_list) 

切片操作在多维数据结构中的应用规则

  1. 基本规则:对于二维列表(类似矩阵结构),外层列表的索引用于选择行,内层列表的索引用于选择列。切片操作[start:stop:step]同样适用,start为起始索引(包含),stop为结束索引(不包含),step为步长。
  2. 选择行:例如matrix[1:3]会选择第2行到第3行(索引从0开始),结果是[[4, 5, 6], [7, 8, 9]]
  3. 选择列:由于列表没有直接按列切片的语法,但可以通过遍历行,对每行进行切片操作来实现。如要获取每一行的前两列,可以使用[[sub_list[0:2] for sub_list in matrix]],结果是[[1, 2], [4, 5], [7, 8]]

需要注意的地方

  1. 索引范围:要确保索引在合法范围内,否则会抛出IndexError。例如,访问matrix[3]会出错,因为只有0、1、2三个合法的行索引。
  2. 步长的影响:步长为负数时,切片方向会改变。如matrix[::-1]会将矩阵的行逆序排列。
  3. 内存和性能:切片操作会生成新的对象(浅拷贝),对于大型多维数据结构,可能会消耗较多内存。如果只是想遍历特定部分的数据而不生成新对象,可以考虑使用生成器表达式。