我是靠谱客的博主 冷艳早晨,最近开发中收集的这篇文章主要介绍Python中切片(Slicing)的运用(:运算符),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

总结:
1,对切片赋值,相当于替代原list中的切片部分,赋值的list不必与切片长度一致,也可以将切片赋值给新的变量,用以取原list中的一部分;
2,list中的元素在切片中可以用正数索引或负数索引表示,正向索引为0,1,2……,第一个元素索引为0;负向索引-1,-2,-3,……最后一个元素索引-1;
3,可以指定间隔进行切片。

局限:
只能对连续段或固定间隔的元素进行切片,无法对多段元素进行提取。我会在后面的博客中探讨对列中更复杂的切割合并问题。

切片Slicing是python非常有用的一个功能,用运算符:实现,这个运算符很强大,有时候也有一点复杂,我简单梳理一下作为入门者的一些参考。

当你需要一个序列的子串的时候,你就可以使用切片操作。例如:

a = ['a','b','c','d','e','f','g']
在a这个序列中,如果你想截取里面['c','d','e']这个子序列,那么你就可以使用切片a[2:5]
它的语法形式是a[start:end],这里有一个区间边沿取值的问题。首先你要明确序列的索引是从0开始的,a[2:5]取值的范围是[2,5),前面是闭区间,后面是开区间,也就是2<=索引值<5这段区间里的元素。所以如果这样来切的话:a[1:1],得到的就是[],空序列。

索引也可以为负,从后往前依次是-1,-2,-3,……

nums = range(5)
# 建立一个从0-5的list
print nums
# 打印出 "[0, 1, 2, 3, 4]"
print nums[2:4]
# 得到索引从2(包括)到4(不包括)的切片; 打印 "[2, 3]"
print nums[2:]
# 得到索引从2(包括)以后的切片;打印 "[2, 3, 4]"
print nums[:2]
# 得到索引从开始到2(不包括)的切片;打印 "[0, 1]"
print nums[:]
# 得到所有元素的切片,相当于啥也没做; 打印["0, 1, 2, 3, 4]"
print nums[:-1]
# 索引可以为负,这里得到从开始到索引为-1(最后一个元素,不包括); 打印["0, 1, 2, 3]"
nums[2:4] = [8, 9] # 对索引从2(包括)到4(不包括)的元素赋值,可以理解为用等号右边的替代切片
print nums
# Prints "[0, 1, 8, 9, 4]"

对切片赋值长度不等于切片长度时,依然可以复制,切片部分被赋值部分完全替代。

>>> a = ['a','b','c','d','e','f','g']
>>> a[2:5] = ['1','2']
>>> print a
['a', 'b', '1', '2', 'f', 'g']
>>> a = ['a','b','c','d','e','f','g']
>>> a[2:5] = ['1','2','3','4']
>>> print a
['a', 'b', '1', '2', '3', '4', 'f', 'g']
不仅能通过赋值改变原list的元素和长度,还可以将原list的切片赋值给新的list:

>>>a = ['a','b','c','d','e','f','g']
>>>b = a[2:7]
>>>print b
['c', 'd', 'e', 'f', 'g']

指定间隔提取切片,下面以间隔3为例,即在切片范围内每3个元素取一个:

>>>a = ['a','b','c','d','e','f','g','h','i','j','k']
>>>b = a[2:9:3]
>>>print b
['c', 'f', 'i']

索引为负数时,可以产生相同的结果:

>>>a = ['a','b','c','d','e','f','g','h','i','j','k']
>>>b = a[-9:-2:3]
>>>print b







最后

以上就是冷艳早晨为你收集整理的Python中切片(Slicing)的运用(:运算符)的全部内容,希望文章能够帮你解决Python中切片(Slicing)的运用(:运算符)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部