Python序列的切片操作符使用

2023-05-16

说明:

切片操作符在python中的原型是
[start:stop:step]

即:[开始索引:结束索引:步长值]

开始索引:同其它语言一样,从0开始。序列从左向右方向中,第一个值的索引为0,最后一个为-1

结束索引:切片操作符将取到该索引为止,不包含该索引的值

步长值:默认是一个接着一个切取,如果为2,则表示进行隔一取一操作。步长值为正时表示从左向右取,如果为负,则表示从右向左取。步长值不能为0

li = [1,2,3,4,5,6,7]

print li[1:]           #输出[2,3,4,5,6,7],省略终止索引,表示取起始索引之后的所有值,等效于li[1:len(li)]

print li[:3]           #输出[1,2,3],省略起始索引,表示从0开始取,等效于li[0:3]

print li[:]            #输出[1,2,3,4,5,6,7],省略起始索引、终止索引、步长值表示取全部,等效于li[0:len(li):1]

print li[::]           #输出[1,2,3,4,5,6,7],省略起始索引、终止索引、步长值表示取全部,等效于li[0:len(li):1]

print li[::-1]        #输出[7,6,5,4,3,2,1],省略起始索引、终止索引,步长值为-1,表示反向获取


原文链接:http://blog.sina.com.cn/s/blog_6d802e7b0100oy01.html

1.切片:

       通过指定下标的方式来获得某一个数据元素,或者通过指定下标范围来获得一组序列的元素,这种访问序列的方式叫做切片。
       访问某一个数据元素的的语法如下:
       sequence[index]
       sequence是序列名,index是想要访问的元素对应的偏移量,偏移量可以是正值,范围是:0<=index<=len(sequence)-1;也可以是负值,范围是:-len(sequence)<=index<=-1
       序列访问多个元素,只需给出开始和结束的索引值,并且用冒号分隔就可以了,其语法如下:
       sequence[starting_index:ending_index]
     通过这种方式我们可以得到从起始索引到结束索引(不包括结束索引对应的元素)之间的
一"片"元素.起始索引和结束索引都是可选的, 如果没有提供或者用None 作为索引值,切片操作
会从序列的最开始处开始,或者直到序列的最末尾结束。
       例如:
          >>> s='abcdfg'
>>> s
'abcdfg'
>>> s[1]
'b'
>>> s[3]
'd'
>>> s[1:3]
'bc'
>>> s[3:5]
'df'
>>> s[4:7]
'fg'
>>> s[:]
'abcdfg'
>>> s[]
  File "<stdin>", line 1
    s[]
      ^
SyntaxError: invalid syntax
>>> s[:7]
'abcdfg'
>>> s[0]
'a'
>>> s[0:7]
'abcdfg'
>>> s[4:]
'fg'
>>> s[-100:100]
'abcdfg'
2. 切片与range()函数联合使用
       有这么一个问题:有一个字符串,我们想通过一个循环按照这样的形式显示它:每次都把
位于最后的一个字符砍掉,下面是实现这个要求的一种方法:
>>> s = 'abcde'
>>> i = -1
>>> for i in range(-1, -len(s), -1):
... print s[:i]
... abcd
abc
ab
a
       可是,该如何在第一次迭代的时候显示整个字符串呢?是否有一种方法可以不用在整个循
环之前加入一个额外的print 语句呢?我们该如何定义一个索引,来代表整个的序列呢?事实
上在个以负数作为索引的例子里是没有一个真正能解决这个问题的方法的,因为-1 已经是“最
小”的索引了.我们不可能用0 来作为索引值,因为这会切片到第一个元素之前而什么都不会显
示:
>>> s[:0]
''
       我们的方案是使用另一个小技巧:用None 作为索引值,这样一来就可以满足你的需要,比
如说,在你想用一个变量作为索引来从第一个到遍历最后一个元素的时候:
>>> s = 'abcde'
>>> for i in [None] + range(-1, -len(s), -1):
... print s[:i]
...
abcde
abcd
abc
ab
a
     不使用用None 作为索引值时,另一种实现满足需要的方法:
>>> s='abcde'
>>> for i in range(len(s),0,-1):
...    print s[:i]
...
abcde
abcd
abc
ab
a
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python序列的切片操作符使用 的相关文章

随机推荐

  • VC开发非MFC程序内存泄漏跟踪代码

    在可执行模块源码中重写new和delete函数 xff0c 在里面插入跟踪代码 xff0c 程序最后t退出前保存统计信息 下面的代码基本能解决问题 xff0c 但程序运行时较慢 xff0c 作为测试时使用可以满足要求 namespace f
  • Windows 为什么需要资源句柄

    Windows 为什么需要资源句柄 句柄存在于句柄表中 xff0c 它指向一个内存池中的一个数据结构实例 句柄的用户无法直接修改 句柄指向数据的值 xff0c 一定程度上保证了数据的安全性 windows如果修改了数据结构 xff0c 由于
  • armadillo + openblas 编译

    1 编译openblas 需要先安装VS2019和intel的免费fortran编译器 2 编译openblas获得lopenblas lib静态库就好了 xff0c 其他项目报错不管他 3 安装该lib库到合适的目录下 xff0c 比如
  • 成员函数指针编程两例

    今天学了一下成员函数指针编程 xff0c 特将代码记在此处 xff0c 代码不太严格 xff0c 阅读过的网友不要简单抄录 例子1 xff1a include 34 stdafx h 34 class CModule typedef voi
  • 处理对话框WM_NCCALCSIZE消息,调用SetWindowPos函数给对话框加上表头

    结合两者 xff0c 可以实现给对话框加上表头 另一种解决方案是在对话框标题栏下创建表头控件 xff0c 一般为CStatic的派生类 xff0c 并将对话框原来的控件都往下移动 xff0c 之后拉长窗口 本人使用了上面的第一种方法 xff
  • 简单的工作者线程封装

    1 基类 class CWorkerThread public CObject DECLARE DYNAMIC CWorkerThread public CWorkerThread m pHost 61 NULL virtual CWork
  • MFC中非MDI子框架窗口

    框架窗口也可以做为界面中的子窗口 创建时要加入WM CHILD属性 下面为示例 1 主框架窗口 include 34 MyChildFrm h 34 class CMainFrame public CFrameWnd public CMai
  • 采用多重继承模仿文档视图结构

    1 数据类 include lt list gt class IJxInterface class CJxDataSet public CCmdTarget DECLARE DYNCREATE CJxDataSet CJxDataSet p
  • MFC程序崩溃地址抓取代码(VC6通过)

    1 更改AfxWinMain函数 stdafx cpp source file that includes just the standard includes MyMainFunc pch will be the pre compiled
  • 打印成员函数地址一例

    代码很简单 static bool bGet 61 false CMyMainFuncView CMyMainFuncView if bGet CString str str Format 34 CMyMainFuncView PreCre
  • 模拟MFC命令消息机制的事件机制

    为了携带更多参数在线程间调用过程 xff0c 我最近模仿windows的MFC命令机制 xff0c 写了一个简单的事件机制 分为事件消息接收器 xff0c 事件转发器 xff0c 事件处理器等 主要代码如下 1 JrEvent h prag
  • 一种多线程环境下的参数访问方法

    应用临界区锁控制访问 xff0c 并利用了模板参数 xff0c 方便应用 template lt typename T gt class CJrParam public CJrParam void InitializeCriticalSec
  • MFC使用API函数GdiAlphaBlend绘制半透明控件

    示例代码如下 if m hBrushBackground HDC back CRect rcx 61 rcc back 61 CreateCompatibleDC dc HBITMAP bmpx bmpx 61 CreateCompatib
  • 近日做的皮肤界面

  • 给ThemeButton加上图标

    采用 DrawThemeBackground API函数可以给ThemeButton加上图标 xff0c 类似以前Delphi风格的按钮 代码及界面效果如下 xff0c 不难 xff0c 就不多解释了 LRESULT CSkinWnd Bu
  • Swift设计模式之解释器模式

    转自 Swift设计模式 原文 Design Patterns In Swift span class hljs comment 解释器模式 span span class hljs comment 百度百科 xff1a 给定一个语言 xf
  • VC 如何在一个矩形框中居中显示一个长字符串

    VC 如何在一个矩形框中居中显示一个长字符串 先使用 DT WORDBREAK 和 DT CALCRECT标志位调用 DrawText函数获得文字的外框尺寸 再使用将该外框尺寸居中显示实际绘制到窗口矩形框中 示例代码和界面效果图如下所示 x
  • 使用开源代码写了一个C++文件阅读编辑器

    源代码在下面这个链接里 http download csdn net detail joshua0137 5022988 欢迎大家使用和提建议
  • 汇编实验1——利用8255实现LED的流水点亮实验

    前言 做这个实验耗时近半天 xff0c 其中安装虚拟机5小时 xff0c 编写程序3小时 踩过不少的坑 xff0c 比如说一开始一直显示不出来usb插件 xff0c 最后发现是开关没开 xff1b 又比如 xff0c 程序逻辑没有问题 xf
  • Python序列的切片操作符使用

    说明 xff1a 切片操作符在python中的原型是 start stop step 即 xff1a 开始索引 结束索引 步长值 开始索引 xff1a 同其它语言一样 xff0c 从0开始 序列从左向右方向中 xff0c 第一个值的索引为0