Python的一个重要特性就是可以在数组中使用负数索引。这样在取值的时候难免碰到疑惑,所以我仔细分析了下range函数,并归纳出一种最快算法。

range([start], stop[, step])

start:开始值

stop:结束值

step:步进(可以正负,正数代表自左向右移动,负数代表自又向左移动)

源代码:

数据连续区域:

print("view: " + str(list(range(3))))

print("--------------------------------")

print("0,3,1: " + str(list(range(0,3,1))))

print("3,0,1: " + str(list(range(3,0,1))))

print("3,-1,1: " + str(list(range(3,-1,1))))

print("-1,3,1: " + str(list(range(-1,3,1))))

print("3,-2,1: " + str(list(range(3,-2,1))))

print("-2,3,1: " + str(list(range(-2,3,1))))

print("3,-3,1: " + str(list(range(3,-3,1))))

print("-3,3,1: " + str(list(range(-3,3,1))))

print("3,-4,1: " + str(list(range(3,-4,1))))

print("-4,3,1: " + str(list(range(-4,3,1))))

print(">>>")

print("0,3,-1: " + str(list(range(0,3,-1))))

print("3,0,-1: " + str(list(range(3,0,-1))))

print("3,1,-1: " + str(list(range(3,1,-1))))

print("1,3,-1: " + str(list(range(1,3,-1))))

print("3,2,-1: " + str(list(range(3,2,-1))))

print("2,3,-1: " + str(list(range(2,3,-1))))

print("3,-1,-1:" + str(list(range(3,-1,-1))))

print("-1,3,-1:" + str(list(range(-1,3,-1))))

print("3,-2,-1:" + str(list(range(3,-2,-1))))

print("-2,3,-1:" + str(list(range(-2,3,-1))))

print("--------------------------------")

运行结果:

view: [0, 1, 2]

--------------------------------

0,3,1: [0, 1, 2]

3,0,1: []

3,-1,1: []

-1,3,1: [-1, 0, 1, 2]

3,-2,1: []

-2,3,1: [-2, -1, 0, 1, 2]

3,-3,1: []

-3,3,1: [-3, -2, -1, 0, 1, 2]

3,-4,1: []

-4,3,1: [-4, -3, -2, -1, 0, 1, 2]

>>>

0,3,-1: []

3,0,-1: [3, 2, 1]

3,1,-1: [3, 2]

1,3,-1: []

3,2,-1: [3]

2,3,-1: []

3,-1,-1:[3, 2, 1, 0]

-1,3,-1:[]

3,-2,-1:[3, 2, 1, 0, -1]

-2,3,-1:[]

--------------------------------

非连续数据区域:

>>> a = [11,55,22,66]

>>> list(a[i] for i in range(len(a)-1,2,-1))

[66]

>>> list(a[i] for i in range(len(a)-1,0,-1))

[66, 22, 55]

>>> list(a[i] for i in range(len(a)-1,-2,-1))

[66, 22, 55, 11, 66]

>>> list(a[i] for i in range(len(a)-1,-3,-1))

[66, 22, 55, 11, 66, 22]

>>> list(a[i] for i in range(len(a)-1,0,-1))

[66, 22, 55]

>>> list(a[i] for i in range(len(a)-1,1,-1))

[66, 22]

测试结果分析:

公式:

数据区域连续(例如:0,1,2,3):

range运行结果=[start...[start+移动位数]]

数据区域非连续(例如:0,1,3,5):

range运行结果=[start...[[数组A][start索引+移动位数]]]

正向(step=1):移动位数=end-start

反向(step=-1):移动位数=start-end

注释:[]中的...代表从start开始,一直到([start+移动位数]或者[[数组A][start索引+移动位数]])的数组。

python range函数范围_Python range函数深入解析相关推荐

  1. python range函数范围_Python range函数

    Python range函数教程 range函数详解 语法 range(start, stop[, step]) 参数 参数 描述 start 计数从 start 开始.默认是从 0 开始. stop ...

  2. python range函数小数_python range函数与numpy arange函数,xrange与range的区别

    转自:https://www.cnblogs.com/ymjyqsx/p/6426764.html 1.range()返回的是range object,而np.arange()返回的是numpy.nd ...

  3. pythonrange函数用法_python range()函数详细用法

    python range()函数详细用法 函数原型:range(start, end, scan): 参数含义:start:计数从start开始.默认是从0开始.例如range(5)等价于range( ...

  4. python quit函数作用_Python常用函数学习笔记

    Python函数很多,常用的函数不同的场景侧重不同,学而时习之,不亦乐乎? abs # 求绝对值 Capitilize函数: # 有列表 li = ['aB', 'egon', 'smith', 'p ...

  5. python中函数定义_Python中函数的定义与使用

    原博文 2020-02-27 16:46 − 一.函数基本定义 定义函数的目的是为了让一段代码可以被重复使用 函数定义的语法: def 函数名([参数,参数.....]): 函数主体代码(多行代码) ...

  6. python的reversed函数实质_Python reversed函数及使用方法解析

    Python reversed函数及使用方法解析 发布时间:2020-09-09 01:07:18 来源:脚本之家 阅读:74 有些时候,程序需要进行反向遍历,此时可通过 reversed() 函数, ...

  7. python 函数进阶_python之函数进阶

    1. 今日内容 1.1 函数的参数 *的魔性用法 函数形参最终顺序 1.2名称空间 全局名称空间,局部名称空间,内置名称空间 取值顺序与加载顺序 作用域 内置函数:globals() locals() ...

  8. python定义匿名函数关键字_Python匿名函数

    匿名:就是没有名字. 匿名函数,即没有名字的函数 没有名字如何定义,如何调用,如果能调用,如何使用. Python借助lambda表达式构建匿名函数. 格式: Lambda参数列表:表达式 (Lamb ...

  9. python 字符串输入时间_Python input()函数:获取用户输入的字符串

    input() 函数用于向用户生成一条提示,然后获取用户输入的内容.由于 input() 函数总会将用户输入的内容放入字符串中,因此用户可以输入任何内容,input() 函数总是返回一个字符串. 例如 ...

  10. python内置函数调用_Python中函数的基本定义与调用及内置函数详解

    前言 函数function是python编程核心内容之一,也是比较重要的一块.首先我们要了解Python函数的基本定义: 函数是什么? 函数是可以实现一些特定功能的小方法或是小程序.在Python中有 ...

最新文章

  1. How to get pure json data by ajax request
  2. 数据格式、类型系统与展示
  3. 结构型模式之Proxy模式
  4. OriginPro 2021b SR1 9.8.5 for win 科学绘图完美中文版
  5. Java教程之RabbitMQ介绍
  6. java string 不变_为什么String在java中是不可变的?
  7. CSS基础(part14)--定位
  8. mysql中union 查询
  9. SpringBoot 2.0 Actuator监控系统
  10. 宝骏530中控屏怎么安装软件_【中山永豊】宝骏530音响升级美国DD双低音,炸机效果征服全场观众!...
  11. tensorflow : gfile 函数
  12. 一道组合数学题-马拦过河卒,很精彩
  13. 获取本机IP可区分系统可区分虚拟机和本机java程序跨平台
  14. 计算机辅助设计阀体,计算机辅助设计——AutoCAD 2009教程
  15. “C:\Users\用户名\AppData\里面的文件是什么?可以删除么??
  16. 手机百度浏览器怎么设置繁体字_繁体字转换简体字在线转换_有什么软件可以把繁...
  17. 【ArcGIS】PointsToLine执行报999999错误的一种解决方案
  18. PMP备考大全:经典题库(8月第4周)
  19. 小程序源码:全新实用工具证件照制作-多玩法安装简单
  20. Go 语言如何自定义 linter(静态检查工具)

热门文章

  1. 计算1到100的整数和
  2. 可编程模拟IC之考虑[zz]
  3. SQL Server 2005 实现数据库同步备份 过程--结果---分析
  4. java structs hibernate php_eclipse+hibernate+structs 环境搭建
  5. python安装numba_安装与Python 3.5适配的numba
  6. hibernate mysql 注解_【译】Spring 4 + Hibernate 4 + Mysql + Maven集成例子(注解 + XML)
  7. 如何提高服务器响应的数据速度_如何提高服务器并发处理能力
  8. 导航类网站|设计没有感觉,苦于寻找各种工具 或者资料的小伙伴收藏好哦
  9. 「PPT模板」 商务UI风格
  10. php中创建函数的正确方法,如何在PHP中创建一个函数