Python序列的切片操作与技巧

序列

序列(consequence)是python中一种数据结构,这种数据结构根据索引来获取序列中的对象。

python中含有六种内建序列类:list, tuple, string, unicode, buffer, xrange。其中xrange比较 特殊,它是一个生成器,其他几个类型具有的一些序列特性对它并不适合。

一般说来,具有序列结构的数据类型都可以使用:index, len, max, min, in, +, *, 切片。如:

>>> a = 'Iloveyou'
>>> len(a)
>>> max(a)
'y'
>>> min(a)
'I'
>>> bool('o' in a)
True
>>> a + a
'IloveyouIloveyou'
>>> a*3
'IloveyouIloveyouIloveyou'
>>> a[1:4]
'lov'
>>> a.index('y')
>>> a[5]
'y'

切片操作

对于具有序列结构的数据来说,切片操作的方法是:consequence[start_index: end_index: step]。

start_index:表示是第一个元素对象,正索引位置默认为0;负索引位置默认为 -len(consequence)

end_index:表示是最后一个元素对象,正索引位置默认为 len(consequence)-1;负索引位置默认为 -1。

step:表示取值的步长,默认为1,步长值不能为0。

[注意]对于序列结构数据来说,索引和步长都具有正负两个值,分别表示左右两个方向取值。索引 的正方向从左往右取值,起始位置为0;负方向从右往左取值,起始位置为-1。因此任意一个序列结构数 据的索引范围为 -len(consequence) 到 len(consequence)-1 范围内的连续整数。

切片操作会将按照给定的索引和步长,截取序列中由连续的对象组成的片段,单个索引返回值可以视 为只含有一个对象的连续片段。

切片的过程是从第一个想要的对象开始,到第一个不想要的对象结束。第一个想要的对象到第一个不 想要的对象之间的连续对象就是你所有想要的对象。

因此在consequence[start_index: end_index]中,切片中包含了consequence[start_index],但不包 括consequence[end_index]。

切片的操作类型:

con[start_index]:返回索引值为start_index的对象。start_index为 -len(con)到len(con)-1之间任意

整数。
con[start_index: end_index]:返回索引值为start_index到end_index-1之间的连续对象。
con[start_index: end_index : step]:返回索引值为start_index到end_index-1之间,并且索引值与

start_index之差可以被step整除的连续对象。

con[start_index: ]:缺省end_index,表示从start_index开始到序列中最后一个对象。
con[: end_index]:缺省start_index,表示从序列中第一个对象到end_index-1之间的片段。
con[:]:缺省start_index和end_index,表示从第一个对象到最后一个对象的完整片段。
con[::step]:缺省start_index和end_index,表示对整个序列按照索引可以被step整除的规则取值。

在使用单索引对序列寻址取值时,你所输入的索引值必须是处于 -len(consequence) 到 len (consequence)-1 之间的值,否则会报错提示索引值超出范围。如:

>>> a=[1,2,3,4,5,6,7]
>>> a[len(a)-1]
>>> a[-len(a)]
>>> a[len(a)]

Traceback (most recent call last):
  File "<pyshell#98>", line 1, in <module>
    a[len(a)]
IndexError: list index out of range
>>> a[-len(a)-1]

Traceback (most recent call last):
  File "<pyshell#99>", line 1, in <module>
    a[-len(a)-1]
IndexError: list index out of range

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索对象
, 索引
, index
, 大量连续序列数据
, 序列
, len
, index位置序列数据
, 一个
, 之间
, 位置索引
, c连续正整数
, xrange和range的区别
index值
python 序列切片、python 切片操作、python list 切片操作、python 切片操作符、python的切片操作,以便于您获取更多的相关知识。

时间: 2025-01-21 00:51:28

Python序列的切片操作与技巧的相关文章

Python序列操作之进阶篇_python

简介 Python 的序列(sequence)通常指一个可迭代的容器,容器中可以存放任意类型的元素.列表和元组这两种数据类型是最常被用到的序列,python内建序列有六种,除了刚刚有说过的两种类型之外,还有字符串.Unicode字符串.buffer对像和最后一种xrange对像,这几种都是不常使用的.本文讲解了列表推导式.切片命名.列表元素排序.列表元素分组的使用方法.学习了 Python 基本的列表操作后,学习这些进阶的操作,让我们写出的代码更加优雅简洁和 pythonic . 列表推导式 当

《编写高质量Python代码的59个有效方法》——第6条:在单次切片操作内,不要同时指定start、end和stride

第6条:在单次切片操作内,不要同时指定start.end和stride 除了基本的切片操作(参见本书第5条)之外,Python还提供了somelist[start:end:stride]形式的写法,以实现步进式切割,也就是从每n个元素里面取1个出来.例如,可以指定步进值(stride),把列表中位于偶数索引处和奇数索引处的元素分成两组: 问题在于,采用stride方式进行切片时,经常会出现不符合预期的结果.例如,Python中有一种常见的技巧,能够把以字节形式存储的字符串反转过来,这个技巧就是采

脚本-python怎么对list使用序列进行切片选择?需要用到某个包里的函数吗,如下2个空分别填什么?

问题描述 python怎么对list使用序列进行切片选择?需要用到某个包里的函数吗,如下2个空分别填什么? 填空: (___________________)letters = 'ABCDEFG'bools = [True False True True False]list(________________)['A' 'C' 'D'] 解决方案 找到答案了from itertools import compresscompress(letters bools)

Python中几种操作字符串的方法的介绍_python

#! -*- coding:utf-8 -*- import string s = 'Yes! This is a string' print '原字符串:' + s print '小写:' + s.lower() print '大写:' + s.upper() print '大小写转换:' + s.swapcase() print '首字母大写:' + s.capitalize() print '每个单词首字母大写:' + s.title() #各种对齐函数 print '左对齐:' + s.

在Python中使用mongoengine操作MongoDB教程

  在Python中使用mongoengine操作MongoDB教程          这篇文章主要介绍了在Python中使用mongoengine操作MongoDB教程,包括在Django下的一些使用技巧,需要的朋友可以参考下 最近重新拾起Django,但是Django并不支持mongodb,但是有一个模块mongoengine可以实现Django Model类似的封装.但是mongoengine的中文文档几乎没有,有的也是简短的几句介绍和使用.下面我就分享一下我在使用过程中所记录下的一些笔记

分享python数据统计的一些小技巧_python

最近在用python做数据统计,这里总结了一些最近使用时查找和总结的一些小技巧,希望能帮助在做这方面时的一些童鞋.有些技巧是很平常的用法,平时我们没有注意,但是在特定场景,这些小方法还是能带来很大的帮助. 1.在字典中将键映射到多个值上面 {'b': [4, 5, 6], 'a': [1, 2, 3]} 有时候我们在统计相同key值的时候,希望把所有相同key的条目添加到以key为键的一个字典中,然后再进行各种操作,这时候我们就可以使用下面的代码进行操作: from collections im

总结python爬虫抓站的实用技巧_python

前言 写过的这些脚本有一个共性,都是和web相关的,总要用到获取链接的一些方法,累积不少爬虫抓站的经验,在此总结一下,那么以后做东西也就不用重复劳动了. 1.最基本的抓站 import urllib2 content = urllib2.urlopen('http://XXXX').read() 2.使用代理服务器 这在某些情况下比较有用,比如IP被封了,或者比如IP访问的次数受到限制等等. import urllib2 proxy_support = urllib2.ProxyHandler(

python文件和目录操作函数小结_python

python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()返回指定目录下的所有文件和目录名:os.listdir()函数用来删除一个文件:os.remove()删除多个目录:os.removedirs(r"c:\python")检验给出的路径是否是一个文件:os.path.isfile()检验给出的路径是否是一个目录:os.path.isdir()判断是否是绝对路径:os.p

python常用的文件操作函数介绍

python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目录名:os.listdir() 函数用来删除一个文件:os.remove() 删除多个目录:os.removedirs(r"c:\python") 检验给出的路径是否是一个文件:os.path.isfile() 检验给出的路径是否是一个目录:os.path.isdir() 判断是否是绝对路