什么是切片

切片,是一个比较生疏的名词,这是现代计算机编程语言或者说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 = a2: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,那么a2:5的step为1,从't'开始逐个取回字符't'、'h'、'o'组成新的列表的子集b,而字符'n'的index为5,5作为取切片操作a2:5里的终点,其字符'n'不取回。从例子可以看出step 为1可以理解为"逐个取"。

step > 1

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

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

程序的结果如下:

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

't', 'o'

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

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

再看一个例子:

a = range(12)
print a
b = a1 : 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列表的切片操作有关,a1 : 10 : 3,这里a1: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。

相关推荐
朝朝辞暮i2 小时前
VLA 系统学习第 4 课:一个 Batch 进入神经网络后,模型到底是怎么“学会”的?
人工智能·python·神经网络·vla
Ada's2 小时前
【计算机基础系列】003:Python数据结构
开发语言·数据结构·python
2601_962885722 小时前
如何用 Python 计算 TRIX 三重指数平滑均线指标?
开发语言·python
还卿一钵无情泪3 小时前
Unsloth 微调 构建自己的大模型 没有GPU也能微调
linux·开发语言·人工智能·python·大模型·nlp·unsloth
蜗牛互联网5 小时前
Python消费Responses SSE事件:增量文本、超时与取消
java·开发语言·人工智能·后端·python
statistican_ABin6 小时前
中国国际旅游发展分析报告—基于世界银行国际旅游数据的多维度分析
python·机器学习·旅游
青少儿编程课堂6 小时前
背包问题(0/1 背包与完全背包)解题精讲——动态规划入门
c++·python·算法·bfs·信息学竞赛
code2cat6 小时前
【随笔】MCP工具注解的信任边界:四个提示如何参与调用决策
python·ai agent·mcp
慢云智慧空间6 小时前
从设备智能到空间理解,慢云科技如何重新定义智慧建筑
python·科技
浮链序6 小时前
用 Claude Haiku 5.5 做子智能体路由,把 Agent 成本砍掉六成
人工智能·python·llm