python之切片
1.为什么要学习切片【切片是解决何种问题的?】
(2)对于含有元素很少的list,我们遍历其前三个元素,通常可以这样来实现:
#遍历list,取其中索引为【0】、【1】、【2】的元素:
L = ['Xiaoming','Xiaohong','Xiaolan','Xiaowang','Xiaozhang']
a = [L[0],L[1],L[2]]
print(a)
------------------------------------------------------------------ #运行结果:
['Xiaoming','Xiaohong','Xiaolan']
(2)显然上述方法,对于取前N(若N很大)个元素的list来说,是比较麻烦的,可以通过循环来进行遍历:
#使用循环遍历前3个元素:
L = ['Xiaoming','Xiaohong','Xiaolan','Xiaowang','Xiaozhang']
r = []
n = 3
for i in range(n):
r.append(L[i])
print(r)
----------------------------------------------------------------------------------------
#打印结果:
['Xiaoming','Xiaohong','Xiaolan']
虽然这种方法较第一种比较好了,但是对于经常取指定索引的操作,循环还是有点繁琐,因此python提供了切片(slice)操作符
2.切片操作符解读
#切片操作符的使用:
L = ['Xiaoming','Xiaohong','Xiaolan','Xiaowang','Xiaozhang']
print(L[0:3])
----------------------------------------------------------------------
#运行结果:
['Xiaoming','Xiaohong','Xiaolan'] ----------------------------------------------------------------------
#含义解读:
L[0:3]:表示从索引0开始,到索引3为止,但不包括索引3,也就是取索引[0] [1] [2]
L[:3]:若第一个索引是[0],可以省略
L[1:3]:从索引1开始取2个元素 #切片还可以从倒数的位置开始取,记住倒数第一的数的索引位置是-1,例如:
L[-2:]:取倒数两个元素
L[-1:]:取倒数第一个元素
L[-2:-1]:取倒数第一个元素
------------------------------------------------------------------------
#间隔取:
#!/usr/bin/env python3
# -*- coding: utf-8 -*- #创建一个0-99的数列
L = list(range(100)) #取前10个数:
print( L[:10] )
---->[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
#取后10个数:
print( L[-10:] )
---->[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
#取前11-20个数字:
print( L[10:20] )
---->[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
#取前10数,每两个取一个:
print( L[:10:2] )
---->[0, 2, 4, 6, 8]
#所有数,每五个取一个:
print( L[::5] )
---->[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
#只写[:]就是原样复制一个list:
print( L[:] )
3.其他知识
(1)字符串'xxxx'也可以看成一种list,每个元素就是一个字符,可以用切片操作,操作结果认为字符串:
#对字符串进行切片操作,取前三个字母
a = 'abcdefg'[:3]
print(a) #运行结果【仍为字符串】
---->abc
(2)tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple:
#对tuple进行切片操作
t = (0,1,2,3,4,5,6,7,8)[:4]
print(t) #运行结果:
---->(1,2,3,4)
4.练习【利用切片操作,实现一个trim()函数,去除字符串首尾的空格】
思路:有以下几种情况:
(1)空字符串 、(2)首尾均无空格:通过if进行匹配并返回字符串本身:
if(s == '' or (s[0:1]!=' ' and s[-1:]!=' ')): #判断是否是(1) (2)情况,若是返回本身
return s
(3)字符串段首有空格:
elif s[0:1]==' ':#判断是否属于(3)情况,若是利用迭代,逐一切片
return trim(s[1:])
(4)字符串段尾有空格:
else : #判断是否属于(4)情况,若是利用迭代,逐一切片
return trim(s[:-1] )
(5)首尾均有空格:先匹配情况(3)、然后匹配情况(4)
完整代码:
#!/usr/bin/env python3
# -*- coding: utf-8 -*- def trim(s):
if(s == '' or (s[0:1]!=' ' and s[-1:]!=' ')): #判断是否是(1) (2)情况,若是返回本身
return s
elif s[0:1]==' ':#判断是否属于(3)情况,若是利用迭代,逐一切片
return trim(s[1:])
else : #判断是否属于(4)情况,若是利用迭代,逐一切片
return trim(s[:-1] ) a = trim('')
b = trim('wang')
c = trim(' wang')
d = trim('wang ')
e = trim(' wang ')
f = trim(' ')
print('a=',a)
print('b=',b)
print('c=',c)
print('d=',d)
print('e=',e)
print('f=',f) -------------------------------------------------------------------------------
#运行结果:
---->a=
---->b= wang
---->c= wang
---->d= wang
---->e= wang
---->f=
python之切片的更多相关文章
- python基础——切片
python基础——切片 取一个list或tuple的部分元素是非常常见的操作.比如,一个list如下: >>> L = ['Michael', 'Sarah', 'Tracy', ...
- python中切片的理解
Python中什么可以切片 l Python中符合序列的有序序列都支持切片(slice) l 如:列表,字符,元祖 Python中切片的格式 l 格式:[start : end : step] ...
- Python字符串切片操作知识详解
Python字符串切片操作知识详解 这篇文章主要介绍了Python中字符串切片操作 的相关资料,需要的朋友可以参考下 一:取字符串中第几个字符 print "Hello"[0] 表 ...
- Python中切片的应用
Python中切片的应用 Python中可以通过切片实现对列表或者字符串取指定范围的操作,实际就是通过对列表或者字符串通过索引进行操作. 具体细节点击廖雪峰Python教程,其中的课后小问题在此记录下 ...
- Python 的切片为什么不会索引越界?
切片(slice)是 Python 中一种很有特色的特性,在正式开始之前,我们先来复习一下关于切片的知识吧. 切片主要用于序列对象中,按照索引区间截取出一段索引的内容. 切片的书写形式:[i : i+ ...
- Python札记 -- 切片赋值
一.疑惑 今天在看<Python Cookbook>第四章Python技巧的4.7小节时,发现一段初看起来让人疑惑的代码.该小节的任务是将一个包含列表(行)的列表,转换成一个新的列表 ...
- Python学习笔记(五)Python的切片和迭代
切片 Python提供了切片操作符,可以对list.tuple.字符串进行截取操作. list中的切片应用 语法如下: >>> L = ['Michael', 'Sarah', 'T ...
- Python 函数 切片 迭代 列表生成器
函数 编写 定义一个函数要用def语句 def sum(i,n): ⚠有冒号 返回多值 实际上是返回一个tuple 定义默认参数 默认参数的作用是简化调用 def ...
- python的切片操作
切片操作符是序列名后跟一个方括号,方括号中有一对可选的数字,并用冒号分割.注意这与你使用的索引操作符十分相似.记住数是可选的,而冒号是必须的. 切片操作符中的第一个数(冒号之前)表示切片开始的位置,第 ...
- Python中切片的工作原理
切片时的索引是在两个字符之间.左边第一个字符的索引为 0,而长度为 n 的字符串其最后一个字符的右界索引为n. 例如: +---+---+---+---+---+---+ | P | y | t | ...
随机推荐
- (转)MySQL字段类型详解
MySQL字段类型详解 原文:http://www.cnblogs.com/100thMountain/p/4692842.html MySQL支持大量的列类型,它可以被分为3类:数字类型.日期和时间 ...
- spring 接收前台ajax传来的参数的几个方法
知识补充 JSON.stringify(), 将value(Object,Array,String,Number...)序列化为JSON字符串JSON.parse(), 将JSON数据解析为js原生值 ...
- TP中使用laravel那一套验证
---恢复内容开始--- 1,tp5项目下新建一个extends目录,同时在入口文件index.php配置 define('EXTEND_PATH', '../extend/'); 结果: 2,加载l ...
- 【C#小知识】C#中一些易混淆概念总结(八)---------解析接口 分类: C# 2014-02-18 00:09 2336人阅读 评论(4) 收藏
这一篇主要来解析关于面向对象中最总要的一个概念--接口. 对于接口来说,C#是有规定使用Interface关键字来声明接口.它的声明是和类一致的.可以说接口就是一个特殊的抽象类.如下代码: cl ...
- Nginx的进程
传统上基于进程或线程模型架构的web服务通过每进程或每线程处理并发连接请求,这势必会在网络和I/O操作时产生阻塞,其另一个必然结果则是对内存或CPU的利用率低下.生成一个新的进程/线程需要事先备好其运 ...
- Linux中终端和控制台的一些不成熟的理解
首先声明,这仅仅是在下一些不成熟的想法.是通过看网上的一些资料和自己实践的一些心得,应该都是些很不成熟甚至是不太正确的想法.但是我还是想记录下来,算是一个心路历程吧.等以后成熟了,再来修改. 首先说一 ...
- docker-compose管理daocker
Docker-compose管理docker服务 1.安装docker-compose @首先确保服务器上已经安装docker环境,如果没有安装使用如下命令进行安装: # yum -y insta ...
- Installing haproxy load balancing for http and https--转载
This example will guide you through a simple IP based load balancing solution that handles ssl traff ...
- lazy-mock ,一个生成后端模拟数据的懒人工具
lazy-mock lazy-mock 是基于koa2构建的,使用lowdb持久化数据到JSON文件.只需要简单的配置就可以实现和json-server差不多的功能,但是比json-server更 ...
- JS权威指南笔记之数据类型
1.类型分为原始类型和对象. 2.原始类型有:数字类型,字符类型,布尔,和null undefind. 3.JavaScript里的函数都是真值. 4.函数和通过New关键字创建对象.这个样函数称为构 ...