Day7 python高级特性-- 切片 Slice
2024-09-05 17:50:56
先举一个例子,取list或tuple中的某几个元素:
1.取 ['a','b','c','d','e','f'] 第1、2、5、6个元素:
>>> a = ['a','b','c','d','e','f']
>>> [ a[0], a[1], a[4], a[5] ]
['a', 'b', 'e', 'f']
>>> a = ['a','b','c','d','e','f']
>>> [ a[0], a[1], a[4], a[5] ]
['a', 'b', 'e', 'f']
2.取前x个元素可以用循环的方式将0~(x-1) 索引范围内的元素取出
不过这样太繁琐了。使用切片(Slice)会非常方便。
切片语法[x:y:z] , x: 开始切片位置, y:结束切片位置(不包含y), z:xy切片后间隔z个元素输出,默认为1可以省略。 如果x为0 ,那么0可以省略,写作为[:y];如果y为最后一个元素,那么y可以省略,写作[x:]。
不过这样太繁琐了。使用切片(Slice)会非常方便。
切片语法[x:y:z] , x: 开始切片位置, y:结束切片位置(不包含y), z:xy切片后间隔z个元素输出,默认为1可以省略。 如果x为0 ,那么0可以省略,写作为[:y];如果y为最后一个元素,那么y可以省略,写作[x:]。
取前三个元素(索引为0,1,2)
>>> ['a','b','c','d','e','f'] [0:3]
['a', 'b', 'c']
or
>>> a = ['a','b','c','d','e','f']
>>> a[0:3]
['a', 'b', 'c']
>>> ['a','b','c','d','e','f'] [0:3]
['a', 'b', 'c']
or
>>> a = ['a','b','c','d','e','f']
>>> a[0:3]
['a', 'b', 'c']
[x:y] ----> 从x开始取到y ,不包含y。
也可以像a[-1] 取倒数第一个元素的方式,支持倒数切片:
>>> a = ['a','b','c','d','e','f']
>>> a[-2:-1]
['e']
>>> a[1:-1]
['b', 'c', 'd', 'e']
>>> a = ['a','b','c','d','e','f']
>>> a[-2:-1]
['e']
>>> a[1:-1]
['b', 'c', 'd', 'e']
取前10个元素
a[:10]
取后10个元素
a[-10:]
取11~20个元素
a[10:20]
a[:10]
取后10个元素
a[-10:]
取11~20个元素
a[10:20]
取前10个元素,每两个元素取一个(一共取5个)
a[:10:2]
a[:10:2]
取全部元素(克隆一个)
a[:] #相当于从0取到最后,所以两个值都省略了
a[:] #相当于从0取到最后,所以两个值都省略了
字符串也可以看成是一种list ,每一个字符就是每一个元素,因此,字符串也可以使用切片来操作。
>>> a = 'abcdefghijklmn'
>>> a[0:3]
'abc'
>>> a[-2:3]
''
>>> a[-2:-1]
'm'
>>> a[-1:]
'n'
>>> a = 'abcdefghijklmn'
>>> a[0:3]
'abc'
>>> a[-2:3]
''
>>> a[-2:-1]
'm'
>>> a[-1:]
'n'
#练习题
#利用切片操作,实现一个trim()函数,去除字符串首尾的空格
def trim(a):
lens = len(a)
if a[:1] == ' ':
a = a[1:]
return trim(a)
elif a[-1:] == ' ': #elif a[-1:lens] == ' ': 直接用[-1:] 就是最后一个元素了~
a = a[:lens-1]
return trim(a)
else :
return a
#测试函数
print(trim(' abc'))
print(trim('hello '))
if trim('hello ') != 'hello':
print('测试失败1!')
elif trim(' hello') != 'hello':
print('测试失败2!')
elif trim(' hello ') != 'hello':
print('测试失败3!')
elif trim(' hello world ') != 'hello world':
print('测试失败4!')
elif trim('') != '':
print('测试失败5!')
elif trim(' ') != '':
print('测试失败6!')
else:
print('测试成功!')
print('测试失败1!')
elif trim(' hello') != 'hello':
print('测试失败2!')
elif trim(' hello ') != 'hello':
print('测试失败3!')
elif trim(' hello world ') != 'hello world':
print('测试失败4!')
elif trim('') != '':
print('测试失败5!')
elif trim(' ') != '':
print('测试失败6!')
else:
print('测试成功!')
最新文章
- Lua 基础
- C# 字典 Dictionary 转 JSON 格式遍历
- MyEclipse设置注释格式(转载)
- HDU	3501 Calculation 2(欧拉函数)
- 基于jeasyui的遮罩扩展[修复链式bug]
- JSP文件转换成为JAVA文件后的结构
- VS访问不到TFS、VS连接TFS报TF30063
- C#工具:WPF生成图片验证码
- Spring Boot读取配置的 5 种方式
- Json Schema的使用
- httpd配置文件详解及实例
- 第一次打开app
- csu oj 1344: Special Judge
- Java基础-流程控制语句与运算符
- springmvc和encache集成
- ASP.NET MVC 项目文件夹结构
- 将Tp-link无线路由器桥接到Dlink无线路由器上
- nfs服务器与客户端配置
- ngRoute 和 ui.router 的使用方法和区别
- 自从教学弟学会了Python,他每天都爬一些好不正经的图片!