Python中[:]与[::]的用法

概述

[:]与[::]语法是通用序列操作(Common Sequence Operations)其中的两个。用[:]或[::]对多数序列类型(可变的或不可变的)(如字符串、列表等)序列中元素进行截取。

[:]的用法

s[i:j]

从下标i到下标j,截取序列s中的元素。

  1. 如果i或j为负数,则下标从序列尾部算起,也就是说,下标i相当于下标len(s)+i,下标j相当于下标len(s)+j。另外,-0依然是0。
  2. 从序列s的下标i的元素(包含)到下标j的元素(不包含)之间所有元素,进行截取。另外,i < j。
    • 若i或j大于len(s),则i或j被len(s)取代。
    • 若i省略或i是None值,则i被0取代。
    • 若j省略或j是None值,则j被len(s)取代。
    • 若i>=j,返回没元素的序列。
>>> a=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[-1:]
[9]
>>> a[-9:-1]
[1, 2, 3, 4, 5, 6, 7, 8]
>>> a[1:20]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[:9]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> a[0:]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[9:3]
[]
>>>

[::]的用法

s[i:j:k]

从下标i到下标j,步数为k,截取序列s中的元素。

  1. 如果i或j为负数,则下标从序列尾部算起,也就是说,下标i相当于下标len(s)+i,下标j相当于下标len(s)+j。另外,-0依然是0。
  2. 从序列s的下标i的元素(包含)到下标j的元素(不包含)之间,选取下标为i+n*k的元素(0 <= n < (j-i)/k),也就是说,选取下标为i, i+k, i +2*k, i+3*k等等的元素,直到下标大于等于j为止。
    • 当k为正数,下标选取反向从0到len(s)-1。
    • 当k为负数,下标选取反向从len(s)-1到0。
    • 当i或j省略或是None值,则被端下标(0或len(s)-1)所取代(具体看k的正负符号)。
    • k不能为0。若k为None值,则将k看成1。
>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[1:10:2]
[1, 3, 5, 7, 9]
>>> a[1:10:3]
[1, 4, 7]
>>> a[1:10:-2]
[]
>>> a[1:10:-3]
[]
>>> a[10:1:-2]
[9, 7, 5, 3]
>>> a[10:1:-3]
[9, 6, 3]
>>> a[::2]
[0, 2, 4, 6, 8]
>>> a[::-2]
[9, 7, 5, 3, 1]
>>> a[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> a[-9:-1:2]
[1, 3, 5, 7]
>>> a[-9:-1:-2]
[]
>>> a[-1:-9:-2]
[9, 7, 5, 3]
>>> a[-1::-2]
[9, 7, 5, 3, 1]
>>> a[:-1:2]
[0, 2, 4, 6, 8]
>>>

参考资料

  1. Common Sequence Operations
  2. python 中的[:-1]和[::-1]
  3. What is :: (double colon) in Python when subscripting sequences?

Python中[:]与[::]的用法相关推荐

  1. 五分钟理解yield在python中的简单用法,让你不再迷惑

    很多同学无论是在学习python还是使用python的过程中,都会遇到yield关键字,这个让人头大的问题,今天,就给大家分享一下我自学yield的心路历程 基本概念: (1)在 Python 中,使 ...

  2. format函数python的顺序_[转载] Python中format函数用法

    Python中format函数用法 format优点 format是python2.6新增的格式化字符串的方法,相对于老版的%格式方法,它有很多优点. 1.不需要理会数据类型的问题,在%方法中%s只能 ...

  3. python代码大全表解释-python中的字典用法大全的代码

    如下代码是关于python中的字典用法大全的代码. #!/usr/bin/env python # # [SNIPPET_NAME: Dictionaries 101] # [SNIPPET_CATE ...

  4. python教程实例-Python中函数的用法实例教程

    本文以数值计算为例讲述了Python中函数的用法,分享给大家供大家参考借鉴之用.具体如下: 我们都知道圆的面积计算公式为: S = πr2 当我们知道半径r的值时,就可以根据公式计算出面积.假设我们需 ...

  5. 详解python中的用法_详解python中*号的用法

    1.表示乘号 2.表示倍数,例如: def T(msg,time=1): print((msg+' ')*time) T('hi',3) 打印结果(打印3次): hi hi hi 3.单个 * (1) ...

  6. python中 str.strip()用法

    python中 str.strip()用法 1.描述 str.strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列. (即可以去除特殊字符串) 注意:该方法只能删除开头或是 ...

  7. Python中的del用法

    python中的del用法比较特殊,新手学习往往产生误解,弄清del的用法,可以帮助深入理解python的内存方面的问题. python的del不同于C的free和C++的delete. 由于pyth ...

  8. python中的super用法详解_【Python】【类】super用法详解

    一.问题的发现与提出 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: class A: def __init__(sel ...

  9. python中argv的用法

    python中argv的用法 sys.argv可以用来获取命令行参数,其中sys.argv[0]为脚本名,即python文件名,列表中的其他值为传入的参数值,一般定义方式为 script, arg1, ...

  10. python中max函数用法_Python中max函数用法实例分析

    Python中max函数用法实例分析 更新时间:2015年07月17日 15:45:09 作者:优雅先生 这篇文章主要介绍了Python中max函数用法,实例分析了Python中max函数的功能与使用 ...

最新文章

  1. Nginx使用http auth basic认证保护后台admin
  2. MinGw 和 cygwin 的区别和联系 (跨平台 windows运行linux程序)
  3. 01.轮播图之二 :tableView 轮播
  4. Consul 服务注册中心
  5. Lack of free swap space on Zabbix server
  6. java web开发之上机指导(2)
  7. react项目中的参数解构_重构复杂的React组件:编写高效且可读组件的5个最佳实践...
  8. 查看Xcode配置文件
  9. 钟表维修管理系统技术解析(八) 保修记录、新增、修改、报废
  10. 中国有哪些优秀的民谣音乐人?
  11. 健身服务公司iFIT赴美上市,64亿美元估值中藏着“喜”与“忧”?
  12. 【全国大学生IoT设计竞赛】安谋科技灵动赛题国赛一等奖分享:多足仿生机器人
  13. hdu 4438 la 6389
  14. Vue3.0----综合案例(第七章)
  15. MAC 安装及配置maven
  16. c++之STl容器-string
  17. 旋转矩阵,矩阵,共轭矩阵
  18. 无线传感器网络定位算法
  19. 加州大学圣克鲁兹分校计算机科学,加州大学圣克鲁兹分校排名
  20. 联想笔记本重装win11系统后恢复fn+q热键

热门文章

  1. 五大算法之三--贪心算法
  2. linux 挂载32T文件系统,linux Centos下磁盘分区及文件系统创建与挂载(示例代码)
  3. 光耦驱动单向可控硅_华越国际一文带路:可控硅触发设计技巧
  4. 【转】04.Dicom 学习笔记-DICOM C-Move 消息服务
  5. C#语言之“string格式的日期时间字符串转为DateTime类型”的方法
  6. C#的变迁史04 - C# 4.0 之多线程篇
  7. WSS 数据库表中的 UserInfo 表中的 tp_SystemId 字段的使用
  8. Java实例化对象过程中的内存分配
  9. SparkStreaming - 窗口函数(窗口操作)
  10. 【HDU - 3440】House Man(差分约束)