Python小白之list切片学习笔记


开搞!!!

1. 常规操作

可迭代对像之切片操作(可以理解为类似于range()的操作),list作为可迭代数据之一,自然也可以进行切片操作。
语法格式为:

slice_list = [start_index:stop_index:step_index] 
其中,stop_index为开区间,即不包含该索引(不知道为啥,反正是python的规则)
  • step_index可省略,默认值为1,此时可简写为:
slice_list = [start_index:stop_index] 
注意:此处冒号(:)也同时被省略(也可以不省略!)
  • step_index可省略,默认值为1,且从起始索引开始将list切分为两部分,取后半部分,则stop_index也可以省略,此时可简写为:
slice_list = [start_index:] 
注意:此处冒号(:)没有被省略(不能省略,否则就是单个元素索引了!)
  • step_index可省略,默认值为1,且从截止索引开始将list切分为两部分,取后前部分,则start_index也可以省略,此时可简写为:
slice_list = [:stop_index] 
注意:此处冒号(:)没有被省略(不能省略,否则就是单个元素索引了!)

示例代码:

# list切片操作

list_ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(list_[0:5])  # list_[0:5] 就等价于 list_[0:5:1] 后面的:1可以省略不写
print(list_[0:5:2])
# 从起始索引开始向后取写法
print(list_[5:])
# 从截止索引开始向前取写法
print(list_[:5])

print(list_[5:1])  # 结果为空,list_[5:1] 等价与list_[5:1:1] 类似于range(),切片结果啥也没有
# 此时可以这么写
print(list_[5:1:-1])

输出结果:

list_[0:5]:[0, 1, 2, 3, 4]
list_[0:5:2]:[0, 2, 4]
list_[5:]:[5, 6, 7, 8, 9, 10]
list_[:5]:[0, 1, 2, 3, 4]
list_[5:1]:[]
list_[5:1:-1]:[5, 4, 3, 2]

2. 负数切皮操作

顾名思义,索引index值可以为负数,负数索引表示倒数第几个(从-1开始),-1表示倒数第1个元素,也是最后一个元素,语法格式同1.

示例代码:

# list负数切片操作(装13操作)
list_ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(list_[-1])  # 倒数第一个(最后一个)
print(list_[-5:])  # 倒数第5个及之后的数据(-5-4...print(list_[:-5])  # 倒数第6个及之前的数据(-6-7-8...print(list_[-1:-5])  # 步进值默认为1,所以输出为空列表:[]
# 可改为:
print(list_[-1:-5:-1])

输出结果:

list_[-1]:10
list_[-5:]:[6, 7, 8, 9, 10]
list_[:-5]:[0, 1, 2, 3, 4, 5]
list_[-1:-5]:[]
list_[-1:-5:-1]:[10, 9, 8, 7]

3.知识拓展与思考:切片是否可以用于赋值操作?

可以吗

经过试验,是可以的。
嗦嘎!!!
直接上示例:

# list切片赋值操作
list_ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

list_[0:2] = [6, 6]
print(list_)
# 如果长度不一样呢
list_[0:2] = [6]
print(list_)

list_[0:2] = [6, 6, 6]
print(list_)

输出结果:

[6, 6, 2, 3, 4, 5, 6, 7, 8, 9, 10]

如果切片长度和赋值长度不一样呢???会有什么效果???

# 如果长度不一样呢

list_ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list_[0:2] = [6]  # 效果:1号元素被删除
print(list_)

list_ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list_[0:2] = [6, 6, 6]  # 效果:在1后面插入一个元素6
print(list_)

输出结果:

[6, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[6, 6, 6, 2, 3, 4, 5, 6, 7, 8, 9, 10]

4.知识小结

对于小白来说,主要要掌握第1节的内容,也是python里面list切片的基本用法,第2节的内容理解即可,主要还是基于第1节的内容进行补充;第3节为个人突发奇想点,仅作为探索使用,一般不建议使用(不直观且容易引入Bug)。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值