当前位置: 首页 > news >正文

什么是切片

切片,是一个比较生疏的名词,这是现代计算机编程语言或者说Python里的一个概念,大致意思是从一个集合里切出一块来,就像切一块豆腐,一刀下去切出两块豆腐

先看一个函数range、返回值是列表,内容和传入range的函数有关。

a = range(1, 21)
print a

 

结果

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

明白了,range可以产生从1到20共20个元素的列表,range的第二个参数不包含这个值,但包含第一个参数的值,每个元素值相差为1

切片是对有序的集合而言,意思从有序集合里提取数据构成子集集合,给定提取的起点start、终点end以及方向上的步长step,能否切出非空子集,起点start需能沿步长方向上到达终点。

字符串和列表、元组都是有序集合,均可实现切片操作,以列表为例给出切片的语法格式如下:

子集名 = 有序集合名[start : end : step]

上边range(1, 21)和切片里的start、end是呼应一致的,含起点start对应的值而不含终点end所对应的值。

step = 1

子集的构成是从start开始每step取一个数据一至到end-1位置结束,step默认为1时,可以省略不写。

s = "python"
a = list(s)
print a
b = a[2:5]
print b

 

程序的结果如下:

['p', 'y', 't', 'h', 'o', 'n']
['t', 'h', 'o']

0

1

2

3

4

5

'p'

'y'

't'

'h'

'o'

'n'

从print b这条语句的打印结果['t', 'h', 'o']可知,'t'在a列表的index为2,'n'字符的index为5,那么a[2:5]的step为1,从't'开始逐个取回字符't'、'h'、'o'组成新的列表的子集b,而字符'n'的index为5,5作为取切片操作a[2:5]里的终点,其字符'n'不取回。从例子可以看出step 为1可以理解为“逐个取”。

step > 1

step可以大于1,这个时候对于step的理解可以这样认为,每step个取一个。

s = "python"
a = list(s)
print a
b = a[2:5:2]
print b

 

程序的结果如下:

['p', 'y', 't', 'h', 'o', 'n']
['t', 'o']

对于列表a取切片a[2 : 5 : 2], 从index为2开始,每2个元素为一组取每组的第一个数据值,一只到index为5结束,但不取index为5的数据。

a[2 : 5 : 2]具体操作是这样的,从index为2的字符't'开始,到index为5的字符'n'之前,每2个为一组('t', 'h')、('o', 'n')取每组的第一个元素值't'、'o'即结果子集b的值。

再看一个例子:

a = range(12)
print a
b = a[1 : 10 : 3]
print b

 

结果是:

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

 

从两行输出结果的第一行可以看出range函数可以产生一个从0开始到小于12的整数的列表,共12个数据。第二行的输出[1, 4, 7]是怎么产生的呢?这个和对a列表的切片操作有关,a[1 : 10 : 3],这里a[1:10] = [1, 2, 3, 4, 5, 6, 7, 8, 9],每3个一组,从每组取第一个,即 [1, 2, 3],[4, 5, 6], [7, 8, 9]这三组,取每组第一个1、4、7构成b这个子集,最后得到的b = [1, 4, 7]。

相关文章:

  • HTML所有功能大汇总
  • 使用Pytorch从零开始构建RNN
  • (二)汇编语句组成
  • 【云原生 Prometheus篇】Prometheus架构详解与核心组件的应用实例(Exporters、Grafana...)
  • 读像火箭科学家一样思考笔记07_探月思维
  • Redis的性能,哨兵模式,集群,
  • 5个高防CDN的特点
  • Ubuntu安装CUDA驱动
  • HarmonyOS(五)—— 认识页面和自定义组件生命周期
  • Go——二、变量和数据类型
  • 开源集群管理系统对比分析:Kubernetes 与 Apache Mesos
  • 母婴服务预约小程序的效果如何
  • vue3 ref和reactive使用watch属性的方法和区别
  • 聚类系列(一)——什么是聚类?
  • 带记忆的超级GPT智能体,能做饭、煮咖啡、整理家务!
  • jQuery 第二章(安装)
  • AI实践与学习1_Milvus向量数据库实践与原理分析
  • 如何在AD的PCB板做矩形槽孔以及如何倒圆弧角
  • 解决Spring Cloud整合Nacos与Gateway的探险之旅
  • 【Java】认识String类
  • 宜昌全域高质量发展:机制创新与产业重构的双向突围
  • 105岁八路军老战士、抗美援朝老战士谭克煜逝世
  • 印度外交秘书:“朱砂行动”不针对军事设施,无意升级事态
  • 追光|铁皮房、土操场,这有一座“筑梦”摔跤馆
  • 美联储主席:美联储工作方式不会受特朗普影响,从未寻求与总统会面
  • 全球第七个迪士尼主题公园将落户阿布扎比