20201007 037.列表

    科技2026-03-03  6

    切片操作

    我们在前面学习字符串时,学习过字符串的切片操作,对于列表的切片操作和字符串类似。

    切片是 Python 序列及其重要的操作,适用于列表、元组、字符串等等。切片的格式如下:

    切片 slice 操作可以让我们快速提取子列表或修改。标准格式为:

    [起始偏移量 start:终止偏移量 end[:步长 step]]

    注:当步长省略时顺便可以省略第二个冒号

     

    典型操作(三个量为正数的情况)如下:

    操作和说明

    示例

    结果

    [:]提取整个列表

    [10,20,30][:]

    [10,20,30]

    [start:]从start索引开始到结尾

    [10,20,30][1:]

    [20,30]

    [:end]从头开始直到end-1

    [10,20,30][:2]

    [10,20]

    [start:end]从start到end-1

    [10,20,30,40][1:3]

    [20,30]

    [start:end:step]从start提

    取到end-1,步长是step

    [10,20,30,40,50,60,70][1:6:2]

    [20,40,60]

     

    其他操作(三个量为负数)的情况:

    示例

    说明

    结果

    [10,20,30,40,50,60,70][-3:]

    倒数三个

    [50,60,70]

    10,20,30,40,50,60,70][-5:-3]

    倒数第五个到倒数第三个(包头不包尾)

    [30,40]

    [10,20,30,40,50,60,70][::-1]

    步长为负,从右到左反向提取

    [70, 60, 50, 40, 30, 20, 10]

     

    切片操作时,起始偏移量和终止偏移量不在[0,字符串长度-1]这个范围,也不会报错。起始偏移量小于 0 则会当做 0,终止偏移量大于“长度-1”会被当成”长度-1”。

    例如:

    >>> [10, 20, 30, 40][1:30]

    [20, 30, 40]

     

    列表的遍历

    for x in listObj:

    print(x)

     

    复制列表所有的元素到新列表对象

    如下代码实现列表元素的复制了吗?

    list1 = [30,40,50]

    list2 = list1

    只是将 list2 也指向了列表对象,也就是说 list2 和 list2 持有地址值是相同的,列表对象本身的元素并没有复制。

    我们可以通过如下简单方式,实现列表元素内容的复制:

    list1 = [30,40,50]

    list2 = [] + list1

    注:我们后面也会学习 copy 模块,使用浅复制或深复制实现我们的复制操作。

    Processed: 0.015, SQL: 9