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 | ...
随机推荐
- linux文件系统底层原理
Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件.目录.软连接及文件保护信息等都存储在其中. 底层原理图: 在讲解各个 ...
- centos7硬盘分区
首先在虚拟机的设置中为系统添加硬盘 使用fdisk -l /dev/sdb 查看未分区的硬盘 fdisk -l /dev/sda 这是已经分区好得 接下来我们就要对sdb进行分区: 首先使用fd ...
- centos7搭建kafka集群-第一篇
Kafka初识 1.Kafka使用背景 在我们大量使用分布式数据库.分布式计算集群的时候,是否会遇到这样的一些问题: 我们想分析下用户行为(pageviews),以便我们设计出更好的广告位 我想对用户 ...
- Fast Newman-FN算法以及模块度定义介绍
一.社区的定义 Newman第一次提出模块度定义就是在2004年发表的这篇文章“fast algorithm for community structure in networks”,第一次用量化的公 ...
- openerp学习笔记 视图(tree\form)中隐藏按钮( 创建、编辑、删除 ),tree视图中启用编辑
视图(tree\form)中隐藏按钮( 创建.编辑.删除 )create="false" edit="false" delete="false&quo ...
- (转)Mysql技术内幕InnoDB存储引擎-事务&备份&性能调优
事务 原文:http://yingminxing.com/mysql%E6%8A%80%E6%9C%AF%E5%86%85%E5%B9%95innodb%E5%AD%98%E5%82%A8%E5%BC ...
- SQL查询排名第二名的信息
今天看见同学去面试的面试题,查询出某个字段排名第二名的信息,自己就看看 如果是Oracle ,这不就是考察Oracle分页么,以Oracle的emp表为例,根据薪水排名,查询排名第二的员工信息: se ...
- Cocos2d-x游戏导出android工程,提取cocos的so文件
Cocos2d-x游戏导出android工程,提取cocos的so文件 原本cocos游戏的android工程编译时,需要将cocos的库文件进行编译,这些文件大部分是cpp文件, 使用ndk ...
- Pycharm 问题:Clear Read-Only Status
用的是ubuntu系统,一直在普通用户模式下打开Git下建的项目,今天运行神经网络程序时,由于有一个cudnn错误,必须要在sudo模式下才不会报错,所以用sudo试着打开了pycharm,发现是完全 ...
- Cloudera Impala源码分析: SimpleScheduler调度策略详解包括作用、接口及实现等
问题导读:1.Scheduler任务中Distributed Plan.Scan Range是什么?2.Scheduler基本接口有哪些?3.QuerySchedule这个类如何理解?4.Simple ...