python--切片--6
原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/
一.对list进行切片
取一个list的部分元素是非常常见的操作。比如,一个list如下:
>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
取前3个元素,应该怎么做?
笨办法:
>>> [L[], L[], L[]]
['Adam', 'Lisa', 'Bart']
之所以是笨办法是因为扩展一下,取前N个元素就没辙了。
取前N个元素,也就是索引为0-(N-1)的元素,可以用循环:
>>> r = []
>>> n =
>>> for i in range(n):
... r.append(L[i])
...
>>> r
['Adam', 'Lisa', 'Bart']
对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。
对应上面的问题,取前3个元素,用一行代码就可以完成切片:
>>> L[:]
['Adam', 'Lisa', 'Bart']
L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。
如果第一个索引是0,还可以省略:
>>> L[:]
['Adam', 'Lisa', 'Bart'
也可以从索引1开始,取出2个元素出来:
>>> L[:]
['Lisa', 'Bart']
只用一个 : ,表示从头到尾:
>>> L[:]
['Adam', 'Lisa', 'Bart', 'Paul']
因此,L[:]实际上复制出了一个新list。
切片操作还可以指定第三个参数:
>>> L[::]
['Adam', 'Bart']
第三个参数表示每N个取一个,上面的 L[::2] 会每两个元素取出一个来,也就是隔一个取一个。
把list换成tuple,切片操作完全相同,只是切片的结果也变成了tuple
range()函数可以创建一个数列:
>>> range(1, 101)
[1, 2, 3, ..., 100]
二.倒序切片
对于list,既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片,试试:
>>> L = ['Adam', 'Lisa', 'Bart', 'Paul'] >>> L[-:]
['Bart', 'Paul'] >>> L[:-]
['Adam', 'Lisa'] >>> L[-:-]
['Lisa', 'Bart']
>>> L[-:-:]
['Adam', 'Bart']
记住倒数第一个元素的索引是-1。倒序切片包含起始索引,不包含结束索引。
三.对字符串切片
字符串 'xxx'和 Unicode字符串 u'xxx'也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:
>>> 'ABCDEFG'[:]
'ABC'
>>> 'ABCDEFG'[-:]
'EFG'
>>> 'ABCDEFG'[::]
'ACEG'
在很多编程语言中,针对字符串提供了很多各种截取函数,其实目的就是对字符串切片。Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。
字符串有个方法 upper() 可以把字符变成大写字母:
>>> 'abc'.upper()
'ABC'
请设计一个函数,它接受一个字符串,然后返回一个仅首字母变成大写的字符串。
def firstCharUpper(s):
return s[].upper()+s[:] print firstCharUpper('hello')
print firstCharUpper('sunday')
print firstCharUpper('september')
Hello
Sunday
September
python--切片--6的更多相关文章
- 关于javascript里面仿python切片操作数组的使用方法
其实在使用了好一段时间的 python之后,我觉得最让我念念不忘的并不是python每次在写函数或者循环的时候可以少用{}括号这样的东西(ps:其实也是了..感觉很清爽,而且又开始写js的时候老是想用 ...
- 流畅的Python——切片
2.4 切片 在 Python 里,像列表(list).元组(tuple)和字符串(str)这类序列类型都支持切片操作,但是实际上切片操作比人们所想象的要强大很多. 在我个人的使用经历来看,在算法实践 ...
- Python切片(入门7)
转载请标明出处: http://www.cnblogs.com/why168888/p/6407977.html 本文出自:[Edwin博客园] Python切片 1. 对list进行切片 L = r ...
- 彻底搞懂Python切片操作
在利用Python解决各种实际问题的过程中,经常会遇到从某个对象中抽取部分值的情况,切片操作正是专门用于完成这一操作的有力武器.理论上而言,只要条件表达式得当,可以通过单次或多次切片操作实现任 ...
- python 切片步长
python切片 切片:list变量[值下标:结束值下标] 什么意思呢? 就是获取 list中 下标从定义的位置开始获取数据到 自定义的下标位置结束, 但是切片有个规矩就是顾头不顾尾, 举个例子 ...
- 关于python切片操作笔记
一. Python可切片对象的索引方式 包括:正索引和负索引两部分,如下图所示,以a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]为例: python索引方式.jpg 二. P ...
- 详解Python 切片语法
Python的切片是特别常用的功能,主要用于对列表的元素取值.这篇文章主要介绍了详解Python 切片语法,需要的朋友可以参考下 Python的切片是特别常用的功能,主要用于对列表的元素取值.使用切片 ...
- 深入理解Python切片
Python序列的切片很基础同时也很重要,最近看到一个[::-1]的表达,不明所以,查了一些资料并实际操作,对Python切片有了更深刻的认识,以下结合例子详细说明.先看下切片的基本语法,一般认为切片 ...
- Python切片
切片是啥, 可以吃么 切片肿么用哈 辣么长,记不住 切片是啥, 可以吃么 嘛,所谓切片故名思意就有选取的意思啦, 跟java里面的subString()意思差不多, 从原始的字符串中按规则提取出新的字 ...
- python 切片
本人的博客中的python内容基本上全是看着廖雪峰大神博客做的一个笔记 关于列表或者元祖的切片 下面说一下列表的切片的语法: L[起始位置:结束位置:步长] number = range(100) n ...
随机推荐
- cmd命令行中的errorlevel和延迟赋值
最近用到了命令行,一点心得: 1.errorlevel返回的确实是上一条命令的返回值,但不同命令的表现完全不同.比如: dir echo %errorlevel% //显示0 dir aldkalf ...
- 这个setDefaultCloseOperation写不写的区别是什么?
2009-03-23 13:40提问者采纳 设置用户在此窗体上发起 "close" 时默认执行的操作.必须指定以下选项之一: DO_NOTHING_ON_CLOSE(在 W ...
- [Java]Java简介
Java版本历史 1995年5月23日,Java语言诞生 1996年1月,第一个JDK1.0诞生 1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术 1996年9月,约8.3 ...
- JSON解析和XML解析
一. XML:用到一个开源解析类,GDataXMLNode(将其加入项目中),添加libxml2.dylib框架 经常用到的方法: 1.- (id)initWithXMLString:(NSStrin ...
- PAT 06-1 简单计算器
想看一般简单计算器实现的看客不好意思了,这不是你想要点东西,此处题设为“只能进行加减乘除”.“都是整数”.”优先级相同“和"从左到右".此题来自PAT(http://www.pat ...
- Git ~ 回到过去 , 进入未来 ~ Git
概述 我们已经成功的添加了一个 readme.txt文件 , 现在是时候 继续工作了 , 于是 我们开始尝试一下 Git给我们所带来的便利下面修改read.txt 改成如下内容 为了尝试 Git 给我 ...
- PHP中的数组(一)
一.数组的概述 1.数组的本质:管理和操作一组变量 2.数组是复合类型 3.数组中可以存储任意长度的数据,也可以存储任意类型的数据 4.数组就可以完成其它语言数据结构的功能(链 ...
- translate居中
<!doctype html> <html> <head> <meta charset="UTF-8"> < ...
- Smart210学习记录-------linux驱动中断
Linux中断 Linux 的中断处理分为两个半部,顶半部处理紧急的硬件操作,底半部处理不紧急的耗时操作.tasklet 和工作队列都是调度中断底半部的良好机制,tasklet 基于软中断实现.内核定 ...
- InitGoogleLogging坑爹
google::InitGoogleLogging(argv[0]); //::google::InitGoogleLogging(argv[0]); 加上这句,竟然没有日志