python日记_切片

先从原理上分析切片运算:

list的切片,内部是调用__getitem__,__setitem__,__delitem__和slice函数。而slice函数又是和range()函数相关的。

给切片传递的键是一个特殊的slice对象。该对象拥有可描述所请求切片方位的属性,例如:

a = [ 1, 2, 3, 4, 5, 6 ]
x = a [ 1 : 5 ] #  x = a.__getitem__( slice ( 1, 5, None ) )
a [ 1 : 3 ] = [10, 11, 12 ]#  a.__setitem__( slice ( 1, 3, None ), [ 10, 11, 12 ] )
del a [ 1 : 4 ]#  a.__delitem__( slice ( 1, 4, None ) )

Python 的切片功能实际上比很多程序员认为的更强大

a = m [ 0 : 100 : 10 ]  #  带步进的切片(步进值=10)

注意:步进值为step

当step > 0 时

切片从 start(含start)处开始,到end(不含end)处结束,**从左往右**,每隔(step-1)(索引之间的差仍为step,但相隔的元素是step-1个)个元素进行一次截取。

这时,start 指向的位置应该在end指向的位置的左边,否则返回值为空

当step < 0 时

切片从 start(含start)处开始,到end(不含end)处结束,**从右往左**,每隔(step-1)(索引之间的差仍为step,但相隔的元素是step-1个)个元素进行一次截取。

这时,start 指向的位置应该在end指向的位置的右边,否则返回值为空

有一个经典应用是:翻转字符串

比如:

 str=‘pythontab.com‘
 str[::-1]

结果为:

‘moc.batnohtyp‘

切片边界问题

实例:

s=[1,2,3,4]       # S 上界为 0 下界为 4
s[-100:100]       #返回 [1,2,3,4] -100超出了上界,100超出了下界:等价于 s[0:4]
s[-100:-200]      #返回 [] -100,-200均超出了上界,自动取上界:等价于s[0:0]
s[100:200]        #返回 [] 100,200均超出了下界,自动取下界值:等价于s[4:4]
s[:100]           #返回 [1,2,3,4] 开始值省略表示从第0个开始
s[0:]             #返回 [1,2,3,4] 结束值为空表示到最后一个结束

注意:我使用的python版本为python2.7,python的切片存在版本兼容问题。在python3中有更加高级的功能和用法,在使用时一定要注意自己的python版本

 

时间: 2024-07-30 20:36:12

python日记_切片的相关文章

python日记_递归

递归算法 1.递归的定义 递归就是子程序(或函数)直接调用自己或通过一系列调用语句间接调用自己,是一种描述问题和解决问题的基本方法. 递归常与分治思想同时使用,能产生许多高校的算法.递归常用来解决结构相似的问题.所谓结构相似,是指构成原问题的子问题与原问题在结构上相似,可以用类似的方法解决.具体地,整个问题的解决,可以分为两部分:第一部分是一些特殊情况,有直接的解法:第二部分与原问题相似,但比原问题的规模小,并且依赖第一部分的结果..实际上,递归是把一个不能或不好解决的大问题转化成一个或几个小问

DayDayUP_Python自学记录[9]_切片

对list进行切片 取一个list的部分元素是非常常见的操作.比如,一个list如下: >>> L = ['Adam', 'Lisa', 'Bart', 'Paul'] 取前3个元素,应该怎么做? 笨办法: >>> [L[0], L[1], L[2]] ['Adam', 'Lisa', 'Bart'] 之所以是笨办法是因为扩展一下,取前N个元素就没辙了. 取前N个元素,也就是索引为0-(N-1)的元素,可以用循环: >>> r = [] >>

Python中的切片操作

Python中的切片操作功能十分强大,通常我们利用切片来进行提取信息,进行相关的操作,下面就是一些切片的列子,一起来看看吧,希望对大家学习python有所帮助. 列如我们从range函数1-100中取7的倍数,函数及结果如下所示: >>> for i in range(1,100)[6::7]: print i 7 14 21 28 35 42 49 56 63 70 77 84 91 98 取一个list或tuple的部分元素是非常常见的操作.比如,一个list如下: >>

python中_、__和__xx__的区别

python中_.__和__xx__的区别 本文为译文,版权属于原作者,在此翻译为中文分享给大家. 英文原文地址:Difference between _, __ and __xx__ in Python 在学习Python时,很多人都弄不清楚各种下划线的意思,而且在这之前已经给其他人解释过很多遍了,是时候把它记录下来. "_"单下划线 Python中不存在真正的私有方法.为了实现类似于c++中私有方法,可以在类的方法或属性前加一个“_”单下划线,意味着该方法或属性不应该去调用,它并不

Python中的切片符

最近在学python,感觉切片符有点难以理解.在网上查了点资料,然后做个总结 理解切片符,首先得知道数组是从0开始的, 而且切片符最后一个是-1. 我们先定义个数组   a=[1,2,3,4,5] 切片的几种格式: 1. a[b:c]  理解:从数组值b开始(包括)一直到数组值c结束(不包括) 实例:print a[2:4]   a的2:4是3,4,5, 因为切片最后的值是不包括的,所以输出的是[3,4] 2. a[b:] 理解:从索引值b开始(包括)到后面所有的值(数组有多少值就是到所有的值)

python开发_++i,i += 1的区分

python开发_++i,i += 1的区分 在很多编程语言(C/C++,Java等)中我们都会碰到这样的语法: 1 int i = 0; 2 ++ i; // -- i; 这样的语法在上述编程语言中可以实现自增(减),在python中也支持这样的语法,不过在python中 这样的用法不是用来自增(减),而是实现数学中的符号运算操作: 1 i = 2 2 ++ i #输出:2 3 +(+i) #输出:2 4 -(+i) #输出:-2 5 +(-i) #输出:-2 6 -(-i) #输出:2 在p

python学习日常-切片&amp;迭代&amp;列表生成式

切片:顾名思义,就是将一个东西切成一块一块的,python中的切片就是将数组切成一片一片的 L=list(range(1,100)); L(f:e:p)#f代表开始切的位置,e代表结束的位置(但不包括),p代表切的间隔. 比如L(10:26:2)代表从第10位开始切(即从数字为11开始)到26结束(即数字27),但是不包括第26位,其中间隔为2. 切片也支持从后面切比如L(-10:-1:none)就是从倒数第10位开始切到最后一位. 值得注意的是切片的三个参数都是可以缺省的. 迭代:非常简单的一

量化分析师的Python日记【第1天:谁来给我讲讲Python?】

量化分析师的Python日记[第1天:谁来给我讲讲Python?]薛昆Kelvin优矿 001 号员工2015-01-28 15:48 58 144克隆 ###“谁来给我讲讲Python?” 作为无基础的初学者,只想先大概了解一下Python,随便编个小程序,并能看懂一般的程序,那些什么JAVA啊.C啊.继承啊.异常啊通通不懂怎么办,于是我找了很多资料,写成下面这篇日记,希望以完全初学者的角度入手来认识Python这个在量化领域日益重要的语言 ###一,熟悉基本 在正式介绍python之前,了解

Python学习_列表解析和Lambda表达式

1.根据要求创建列表threes_and_fives(列表值包括1到15中能够被3或者5正常的数) threes_and_fives=[x for x in range(1,16) if x%3==0 or x%5==0] 2.lambda表达式实例(剔除掉列表中的"X") garbled = "IXXX aXXmX aXXXnXoXXXXXtXhXeXXXXrX sXXXXeXcXXXrXeXt mXXeXsXXXsXaXXXXXXgXeX!XX" message