Python3之切片及内置切片函数slice

     切片

    取一个list或tuple的部分元素是非常常见的操作。比如,一个list

1
L=[0,1,2,3,4,5,6,7,8,9]

  取前3个元素,应该怎么做

       笨方法,一个个列出来

1
2
>>> [L[0],L[1],L[2]]
[0, 1, 2]

  假如需要列出N个但是N很大 

  循环方法

1
2
3
4
5
6
7
>>> r=[]
>>> n=3
>>> for i in range(n):
...   r.append(L[i])
...
>>> r
[0, 1, 2]

  对于经常去指定索引范围的操作,用循环十分繁琐,因此pythone提供了切片操作符能大大简化操作

1
2
>>> L[0:3]
[0, 1, 2]

  L[0:3]表示,从索引0开始,直到索引3,但是不包含索引3,及索引0,1,2 一共3个元素

  如果第一个索引为0可以省略

1
2
>>> L[:3]
[0, 1, 2]

  也可以从索引1开始,取出2个元素来

1
2
>>> L[1:3]
[1, 2]

  类似也可以倒数切片,-1代表倒数第1个索引

1
2
3
4
>>> L[-2:]
[8, 9]
>>> L[-2:-1]
[8]

  默认取的间隔是1也可以定义,隔几个去一个

  从索引0取到索引9没隔两个取一个

1
2
>>> L[0:10:2]
[0, 2, 4, 6, 8]

  什么都不写,只写[:]就可以原样复制一个list

1
2
>>> L[:]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

  tuple也是一个list,唯一区别是tuple不可变.tuple切片也是一个tuple

1
2
>>> (0,1,2,3,4,5)[:3]
(0, 1, 2)

  字符串'xxx'也是可以看成是一种list,也可以切片返回的是一个字符

1
2
>>> 'abcde'[:3]
'abc'

  

  切片函数slice

  语法

1
2
class slice(stop)
class slice(start, stop[, step])

  参数说明

1
2
3
start--起始位置  默认为None
stop--结束位置   自定义
step--间距         默认为None间距为1

  

1
2
3
4
5
6
7
8
9
10
11
>>> myslice=slice(3)
>>> myslice
slice(None, 3, None)
>>> L[myslice]
[0, 1, 2]
>>> print(myslice.start)
None
>>> print(myslice.step)
None
>>> print(myslice.stop)
3

  以上

1
2
3
myslice=(3)
等价于
myslice=slice(0,3,1)

  自定义间隔step

1
2
3
4
5
6
7
#切片范围为0-10 间距为2
>>> myslice=slice(0,10,2)
#查看参数
>>> myslice
slice(0, 10, 2)
>>> L[myslice]
[0, 2, 4, 6, 8]

  

posted @   minseo  阅读(7246)  评论(0编辑  收藏  举报
编辑推荐:
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
阅读排行:
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 从 Windows Forms 到微服务的经验教训
· 李飞飞的50美金比肩DeepSeek把CEO忽悠瘸了,倒霉的却是程序员
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee
点击右上角即可分享
微信分享提示