对list进行切片

取一个list的部分元素是非常常见的操作。比如,一个list如下:

>>> L = [‘Adam‘, ‘Lisa‘, ‘Bart‘, ‘Paul‘]

取前3个元素,应该怎么做?

笨办法:

>>> [L[0], L[1], L[2]]
[‘Adam‘, ‘Lisa‘, ‘Bart‘]

之所以是笨办法是因为扩展一下,取前N个元素就没辙了。

取前N个元素,也就是索引为0-(N-1)的元素,可以用循环:

>>> r = []
>>> n = 3
>>> for i in range(n):
...     r.append(L[i])
...
>>> r
[‘Adam‘, ‘Lisa‘, ‘Bart‘]

对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。

对应上面的问题,取前3个元素,用一行代码就可以完成切片:

>>> L[0:3]
[‘Adam‘, ‘Lisa‘, ‘Bart‘]

L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。

如果第一个索引是0,还可以省略:

>>> L[:3]
[‘Adam‘, ‘Lisa‘, ‘Bart‘]

也可以从索引1开始,取出2个元素出来:

>>> L[1:3]
[‘Lisa‘, ‘Bart‘]

只用一个 : ,表示从头到尾:

>>> L[:]
[‘Adam‘, ‘Lisa‘, ‘Bart‘, ‘Paul‘]

因此,L[:]实际上复制出了一个新list。

切片操作还可以指定第三个参数:

>>> L[::2]
[‘Adam‘, ‘Bart‘]

第三个参数表示每N个取一个,上面的 L[::2] 会每两个元素取出一个来,也就是隔一个取一个。

把list换成tuple,切片操作完全相同,只是切片的结果也变成了tuple。

range()函数可以创建一个数列:

>>> range(1, 101)
[1, 2, 3, ..., 100]

请利用切片,取出:

1. 前10个数;

2. 3的倍数;

3. 不大于50的5的倍数。

参考代码:

L = range(1, 101)

print L[0:10]
print L[2::3]
print L[4:50:5]

print L[0:10]#从第1个数元素开始取,到第11元素结束

print L[2::3]#从第三元素开始取,每隔2个取一个元素

print L[4:50:5]#从第五个取,每隔4个取一个,‘开始元素’:‘最后元素’:‘取元素间隔’

倒序切片

对于list,既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片,试试:

>>> L = [‘Adam‘, ‘Lisa‘, ‘Bart‘, ‘Paul‘]

>>> L[-2:]
[‘Bart‘, ‘Paul‘]

>>> L[:-2]
[‘Adam‘, ‘Lisa‘]

>>> L[-3:-1]
[‘Lisa‘, ‘Bart‘]

>>> L[-4:-1:2]
[‘Adam‘, ‘Bart‘]

记住倒数第一个元素的索引是-1。倒序切片包含起始索引,不包含结束索引。

任务

利用倒序切片对 1 - 100 的数列取出:

* 最后10个数;

* 最后10个5的倍数。

参考代码:
L = range(1, 101)
print L[-10:]
print L[4::5][-10:]  //先获得5的倍数,再取后10个

对字符串切片

字符串 ‘xxx‘和 Unicode字符串 u‘xxx‘也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:

>>> ‘ABCDEFG‘[:3]
‘ABC‘
>>> ‘ABCDEFG‘[-3:]
‘EFG‘
>>> ‘ABCDEFG‘[::2]
‘ACEG‘

在很多编程语言中,针对字符串提供了很多各种截取函数,其实目的就是对字符串切片。Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。

任务

字符串有个方法 upper() 可以把字符变成大写字母:

>>> ‘abc‘.upper()
‘ABC‘

但它会把所有字母都变成大写。请设计一个函数,它接受一个字符串,然后返回一个仅首字母变成大写的字符串。

提示:利用切片操作简化字符串操作。

参考代码:

def firstCharUpper(s):
    return s[0].upper()+s[1:]

print firstCharUpper(‘hello‘)
print firstCharUpper(‘sunday‘)
print firstCharUpper(‘september‘)

时间: 2024-10-05 05:45:32

对list进行切片的相关文章

GoLang笔记-数组和切片,本质是就是长度不可变的可变的区别

数组 Arrays 数组是内置(build-in)类型,是一组同类型数据的集合,它是值类型,通过从0开始的下标索引访问元素值.在初始化后长度是固定的,无法修改其长度.当作为方法的入参传入时将复制一份数组而不是引用同一指针.数组的长度也是其类型的一部分,通过内置函数len(array)获取其长度. 初始化 数组的初始化有多种形式,查看示例代码 , 在线运行示例代码 [5] int {1,2,3,4,5} 长度为5的数组,其元素值依次为:1,2,3,4,5 [5] int {1,2} 长度为5的数组

Go语言切片初识

Go切片(Slice)是Go数组的一个抽象. 由于Go数组允许定义类型的变量,可以容纳相同数据类型的几个数据项,但它不提供任何内置的方法来动态增加其大小或获取自己的子数组.切片就没有这样的限制. 它提供了数组所需的许多实用功能,并广泛用于Go编程. 定义切片     var numbers []int /* 未指定大小 */     /* numbers == []int{0,0,0,0,0}*/     numbers = make([]int,6,6) /* 长度是6容量是6的切片*/ le

python中的切片问题

对于在一个字符串中选取几个字符,不同的语言有不同的解决方案,python 中就有了切片的方法.    在list中,如下:     s=list(range(1,101))    如果想要选取偶数个数字(或者选取偶数),可以用循环的方法:但是方法臃肿,比较"笨"    但是python中给出的切片方法是更加的优雅的,如下:    L=list(range(1,101))    print(L[0])    print(L[0:10])#输出结果是[1, 2, 3, 4, 5, 6, 7

Unity 导出切片精灵

http://blog.csdn.net/akof1314/article/details/38845933 设有一张png/tga图集,导入到Unity,放置目录"Assets/Resources/UI"(UI文件夹可替换成其他的,重要的是要在"Assets/Resources/"路径下),默认为如下设置: 为了可以使用Unity自带的精灵切割,要将纹理类型改成"Sprite","Sprite Mode"改成"Mu

ArcGIS 制作 “地图切片(tile)”

地图切片简介 地图切片,就是将一幅地图切成很多大小一致的小块,调用时候,只有需要的部分才会发送过去,节省带宽的同时,还节省了服务器端实时渲染地图的时间.但是地图切片有一个特点,就是不适合经常变动,或者说实时动态的数据,因为地图切片是地图服务器端事先渲染好的,而且制作地图切片是一个漫长的过程,可以说真的需要很长时间,但是用一次的耗费,换来性能的提升和节省多次渲染的时间是值得的. 切片的示意图如下图,在地图上覆盖这么一个网格,直接切出来.不同之处是,切片可能会分很多级,为了支持在不同缩放级别的显示:

python切片 []取值操作符

切片1.什么叫切片数组,元组等含有多个元素的集合,取其中的一段元素的操作,叫做切片 2.取前10个元素 l = list(range(100)) l3 = l[:10] print(l3) 运行结果: 3.取10到20之间的数据 l = list(range(100)) l3 = l[10:20] print(l3) 运行结果: 4.取倒数第10个以后的数据倒数第一个的index为-1,倒数第二个为-2,以此类推. l = list(range(100)) l3 = l[-10:] print(

python切片

假设有一个list,要对其进行截取操作 L = ['Michael', 'Smith', 'Jobs', 'John'] 首先分别取出其中的值,我们可以像PHP中操作数组一样取值 可见,此种方法可以取出L的值.值得注意的是,索引同PHP Array一样从0开始 如果想取出L中前3个元素,也可以使用for循环来处理 用这种方法,取出了要求的结果.但是python提供了一种更方便简洁的操作,就是切片(slice).下面来演示如果使用切片来获取L中的前三个元素 仅仅用L[0:3]就达到了同for操作一

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如下: >>

切图 or 切片

一点题外话: 提到切图,让我想起曾经有好几个月的时间,我每天的主要工作就是切图,或者说切片了. 要制作语文课本中每篇课文的朗读卡拉OK效果,其中一道工序,就是要把文章中的每个字连同上面的拼音,切成单独的一张小图. 一张图上,文字数百上千,纯粹的体力活. 不过这是用fireworks切的片. 今天要说的是用photoshop来切片. 要做一个拼图的小游戏,需要用ps把原图切成长宽一致的15张小图. 1,用ps打开图片 2,在图片上点右键,调出菜单 3,设置水平划分为3,垂直划分为5,则自动划分为1

Python切片详解

先从原理上分析切片运算: list的切片,内部是调用__getitem__,__setitem__,__delitem__和slice函数.而slice函数又是和range()函数相关的. 给切片传递的键是一个特殊的slice对象.该对象拥有可描述所请求切片方位的属性,例如: 1 a = [ 1, 2, 3, 4, 5, 6 ] 2 x = a [ 1 : 5 ] # x = a.__getitem__( slice ( 1, 5, None ) ) 3 a [ 1 : 3 ] = [10, 1