python列表切片操作

python列表的切片操作,是一个使用频率非常高的技术,你应该认真学习掌握

所谓切片,就是从列表中截取某一部分,它的一般形式为 [start:end), 左闭右开. 对于列表的操作,离不开索引,做切片操作时,就必须指定截取的起始位置和结束位置

1. 指定开始和结束位置

lst = [3, 4, 1, 4, 2, 5, 8]

lst1 = lst[3:6]
print(lst1)

程序输出结果为

[4, 2, 5]

切片操作的一般模式是[start:end],shart 和 end 所指的都是索引,截取时,end索引位置的元素不会被截取,这一点尤其要注意,比如上面的示例中

lst1 = lst[3:6]

索引为6的元素是8,8没有出现在结果里,截取范围是3到6,6-3=3,最终切片截取的列表长度也正好是3

在使用切片时,也可以使用倒序索引

lst = [3, 4, 1, 4, 2, 5, 8]

lst1 = lst[2:-2]
print(lst1)

程序输出结果

[1, 4, 2]

2. 指定开始位置,不指定结束位置

lst = [3, 4, 1, 4, 2, 5, 8]

lst1 = lst[2:]
print(lst1)

如果不指定结束位置,那么切片操作会从开始位置截取到列表末尾,程序输出结果为

[1, 4, 2, 5, 8]

3. 指定结束位置,不指定开始位置

lst = [3, 4, 1, 4, 2, 5, 8]

lst1 = lst[:5]
print(lst1)

如果不指定开始位置,那么默认开始位置为0,程序输出结果为

[3, 4, 1, 4, 2]

4. 切片操作允许索引超出范围

lst = [3, 4, 1, 4, 2, 5, 8]

lst1 = lst[:11]
print(lst1)

上面的代码中,结束位置的索引设置为11,显然已经超出了列表索引的范围,但是却没有引发错误,对于这种情况,切片操作自身做了处理,如果结束位置的索引超出索引范围,那么就以列表长度作为结束位置

5. 指定切片间隔

关于切片间隔,已经在字符串切片操作做过讲解,本文不做赘述,只给出示例代码,想要了解切片间隔,可以去看这篇文章。

lst = [1, 2, 3, 4, 5]

print(lst[::-2])    # [5, 3, 1]
print(lst[::-1])    # [5, 4, 3, 2, 1]

6. 切片操作应用示例---分组

lst = [2, 3, 4, 1, 5, 2, 7, 1, 8, 9, 10, 31, 22, 34]

上面定义了一个列表,现在要求你从第一个元素开始,每三个一组求和,将所求得的和放入新列表sum_lst

示例代码

lst = [2, 3, 4, 1, 5, 2, 7, 1, 8, 9, 10, 31, 22, 34]

step = 3
sum_lst = []
for i in range(0, len(lst), step):
    tmp = lst[i: i+step]
    sum_lst.append(sum(tmp))

print(sum_lst)

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案