精华内容
下载资源
问答
  • 什么数组下标是从0开始?

    千次阅读 2018-10-28 20:08:43
    也不是所有的高级程序语言都是如此,比如Python数组下标就支持负数

    也不是所有的高级程序语言都是如此,比如Python数组下标就支持负数。

    原因一:历史原因

    语言出现顺序从早到晚C、Java、JavaScript。
    C语言数组下标是从0开始->Java也是->JavaScript也是。
    降低额外的学习和理解成本。

    原因二:减少CPU指令运算

    (1)下标从0开始:

    数组寻址——arr[i] = base_address + i * type_size --公式(1)

    其中base_address为数组arr首地址,arr[0]就是偏移量为0的数组,即数组arr首地址;i为偏移量,type_size为数组类型字节数,比如int为32位,即4个字节。

    (2)下标从1开始:

    数组寻址——arr[i] = base_address + (i -1)* type_size --公式(2)

    比较两个计算公式可以发现公式(2)每次CPU寻址需要多一次 i-1的操作,即多了一次减法的指令运算。

    对于数组这种基础数据结构,无论在哪种高级程序语言中,都是频繁间接(作为容器的基础数据结构,比如Java的ArrayList)或者直接被使用的,因此要尽量减少其消耗CPU资源。

    原因三:物理内存的地址是从0开始的

    计算机主存被抽象成由多个连续字节大小的单元组成的数组(逻辑地址),每个字节都对应唯一的物理地址,第一个字节的地址为0。

    原因四:计算机组成原理

    无论是二进制还是十进制,都要表示数字1,只有N(N进制)的0次方才能产生数字1。

    展开全文
  • 也不是所有的高级程序语言都是如此,比如Python数组下标就支持负数。 原因一:历史原因 语言出现顺序从早到晚C、Java、JavaScript。 C语言数组下标是从0开始->Java也是->JavaScript也是。 降低额外的学习和...

    也不是所有的高级程序语言都是如此,比如Python数组下标就支持负数。

    原因一:历史原因

    语言出现顺序从早到晚C、Java、JavaScript。
    C语言数组下标是从0开始->Java也是->JavaScript也是。
    降低额外的学习和理解成本。

    原因二:减少CPU指令运算

    (1)下标从0开始:

    数组寻址——arr[i] = base_address + i * type_size

    其中base_address为数组arr首地址,arr[0]就是偏移量为0的数组,即数组arr首地址;i为偏移量,type_size为数组类型字节数,比如int为32位,即4个字节。

    (2)下标从1开始:

    数组寻址——arr[i] = base_address + (i -1)* type_size

    比较两个计算公式可以发现公式(2)每次CPU寻址需要多一次 i-1的操作,即多了一次减法的指令运算。

    对于数组这种基础数据结构,无论在哪种高级程序语言中,都是频繁间接(作为容器的基础数据结构,比如Java的ArrayList)或者直接被使用的,因此要尽量减少其消耗CPU资源。

    原因三:物理内存的地址是从0开始的

    计算机主存是多个连续字节大小的单元组成的数组,每个字节都对应唯一的物理地址,第一个字节的地址为0。

    展开全文
  • j是终止位置,默认len(a),在取出数组中的值时就会从数组下标i(包括)一直取到下标j(不包括j) 在一个冒号的情况下若出现负数则代表倒数某个位置 a[i:-j] 这里就是从下标i取到倒数第j个下标之前(不包括...

     

    1.冒号的用法

    1.1 一个冒号

    a[i:j]

    这里的i指起始位置,默认为0;j是终止位置,默认为len(a),在取出数组中的值时就会从数组下标i(包括)一直取到下标j(不包括j)

    在一个冒号的情况下若出现负数则代表倒数某个位置

    a[i:-j]

    这里就是从下标i取到倒数第j个下标之前(不包括倒数第j个下标位置的元素)

    1.2 两个冒号

    a[i:j:h]

    这里的i,j还是起始位置和终止位置,h是步长,默认为1

    若i/j位置上出现负数依然倒数第i/j个下标的位置,h若为负数则是逆序输出,这时要求起始位置下标大于终止位置

    在两个冒号的情况下若h为正数,则i默认为0,j默认为len(a);

    若h为负数,则i默认为-1(即最后一个位置),j默认为-len(a)-1(下标0的前一个位置,这样就能输出到下标0了)

    2.举例说明

    ok,接下来就对冒号更多灵活的用法举例说明

    a='python'
    b=a[:]
    print(b)
    
    >>python #一个冒号代表默认全选
    a='python'
    b=a[1:4:]
    print(b)
    
    >>yth #冒号后没有写明故代表默认步长为1
    a='python'
    b=a[:-1]
    print(b)
    
    >>pytho #-1代表倒数第一个位置,因为:前面的初始位置没有指定,默认为0,就从下标0一直取到最后一个位置之前
    a='python'
    c=a[1:-2] 
    print(c)
    
    >>yth #-2代表倒数第二个位置,即从下标1取到倒数第二个位置之前
     
    a='python'
    b=a[::-1]
    print(b) 
    
    >>nohtyp #前两个冒号和上面一致,就是确定起始位置和终止位置
    #第三个参数-1是指步长为-1,也就是逆序输出
    #这里a[::-1]相当于 a[-1:-len(a)-1:-1],也就是从最后一个元素到第一个元素
    #所以[::-1]经常用来对一个数组进行逆序输出
     
     
    a='python'
    b=a[1:4:-1]
    print(b) 
    
    >>
    #这里什么也没有输出,因为按照给定的步长是无法从下标1走到4的,所以输出为空但不会报错
     
    a='python'
    b=a[-2:-7:-2]
    print(b)
    
    >>otp #这里起始位置是-2,终点是-7(不包括,所以输出到-6位置),步长为-2
     
    a = np.array([[1,2,3],[4,5,6],[7,8,9],[11,12,13]])
    print(a[::-1,2:0:-1])
    
    >>[[13 12]
     [ 9  8]
     [ 6  5]
     [ 3  2]]
    #对于多维数组也是一样的,可以分别对每一维进行操作,中间用逗号分隔
     

     最后再看一个图片举例

    转载于:https://www.cnblogs.com/liuys635/p/11209946.html

    展开全文
  • python数组中冒号的用法

    千次阅读 2020-03-29 14:00:02
    j是终止位置,默认len(a),在取出数组中的值时就会从数组下标i(包括)一直取到下标j(不包括j) 在一个冒号的情况下若出现负数则代表倒数某个位置 a[i:-j] 这里就是从下标i取到倒数第j个下标之前(不包括倒数...

    1.冒号的用法

    1.1 一个冒号

    a[i:j]

    这里的i指起始位置,默认为0;j是终止位置,默认为len(a),在取出数组中的值时就会从数组下标i(包括)一直取到下标j(不包括j)

    在一个冒号的情况下若出现负数则代表倒数某个位置

    a[i:-j]

    这里就是从下标i取到倒数第j个下标之前(不包括倒数第j个下标位置的元素)

    1.2 两个冒号

    a[i:j:h]

    这里的i,j还是起始位置和终止位置,h是步长,默认为1

    若i/j位置上出现负数依然倒数第i/j个下标的位置,h若为负数则是逆序输出,这时要求起始位置下标大于终止位置

    在两个冒号的情况下若h为正数,则i默认为0,j默认为len(a);

    若h为负数,则i默认为-1(即最后一个位置),j默认为-len(a)-1(下标0的前一个位置,这样就能输出到下标0了)

    展开全文
  • 注意:Python是可以为负数的 原因一:历史原因 语言出现顺序从早到晚C、Java、JavaScript。 C语言数组下标是从0开始->Java也是->JavaScript也是。 降低额外的学习和理解成本。 原因二:减少CPU指令运算 ...
  • j是终止位置,默认len(a),在取出数组中的值时就会从数组下标i(包括)一直取到下标j(不包括j) 在一个冒号的情况下若出现负数则代表倒数某个位置 a[i:-j] 这里就是从下标i取到倒数第j个下标之前(不包括倒数第j...
  • 也不是所有的高级程序语言都是如此,比如Python数组下标就支持负数。 原因一:历史原因 语言出现顺序从早到晚C、Java、JavaScript。 C语言数组下标是从0开始->Java也是->JavaScript也是。降低额外的学习和...
  • #Python中没有专门的数组(当然,引入外部模块可以实现),而是用更强大的list代替了 #为什么说不是list呢?...#list下标为负数,即从最后一个元素往前倒数,但是-5还是会越界异常的。例如: print(names
  • 给定一个数组(可能包含负数),求连续的和最大的子数组 例: [-1, 0, 2, 3, -4, 8] 返回 9 因为0+2+3+(-4)+8=9 思路: 比较下标t时刻的值和t+ t-1 时刻的值, 如果t时刻大于 t-1 + t时刻的和, 则选择重新开始计算...
  • python第二章

    2015-09-12 14:56:38
    索引类似数组下标, 数组中使用负数索引时, 最后一个元素a[-1]; 分片操作的实现需要提供两个索引作为边界, 第一个索引的元素是包含在分片内的, 第二个不包含. 若要访问到最后一个元素, 则将第二个索引置空. ...
  • Python异常处理机制

    2021-01-28 23:09:58
    程序运行时常会碰到一些错误,例如除数为 0、年龄为负数数组下标越界等,这些错误如果不能发现并加以处理,很可能会导致程序崩溃。 和 C++、Java 这些编程语言一样,Python 也提供了处理异常的机制,可以让我们...
  • Python学习笔记:part 2

    2018-04-14 16:52:05
    IDE:VSCode Python版本:Python3.6 学习教材:《Python编程从入门到实践》人民邮电出版社 列表:列表类似C中的...首元素索引为0,和C语言中数组下标一个道理。索引为负数(如-x)代表倒数第x个元素。修改列表...
  • 代码学习之Python冒号详解

    千次阅读 2020-10-11 13:26:56
    j是终止位置,默认len(a),在取出数组中的值时就会从数组下标i(包括)一直取到下标j(不包括j) 在一个冒号的情况下若出现负数则代表倒数某个位置 a[i:-j] 这里就是从下标i取到倒数第j个下标之前(不包括倒数...
  • python中,序列是一组按照顺序排列的值“数据集合”,字符串、列表、元组都是序列类型,其优点是支持索引(类似C的数组下标)和切片的操作。 特征:第一个正索引为0,指向最左端,第一个索引为负数指向最右端。 ...
  • 一、序列概述 序列是按照一定顺序排列,用于存放多... 0表示第一个元素,这个与数组下标类似,不同的是python的索引可以为负数。 需要注意的是负数索引是从右往左计数,且下标从-1开始。这是为了防止与第一个 元素重
  • 在第二课中我们初步认识了列表、元祖和字典。这节课我们来系统地深入学习一下。 一.Python序列简介 通俗地讲,序列就是一块用来存放多个值的连续...最后一个元素下标为-1,倒数第二个为-2,以此类推。 二.列表 1.P
  • python的序列

    2007-07-24 18:07:41
    python的序列包括列表,元组,字符串.1.取单个项目与数组下标差不多,不同的是它的索引可以为负数,list[-1]是允许的,可以看作是list[list长度-index]2.取切片用:号格开,list[:3],当然,索引同样可以用负数....
  • 2、Python列表和元组

    2018-01-11 12:13:00
    2、Python序列  序列是一种数据存储方式,类似于C语言的数组。简单的说序列是一块用来存储多...一般0为第一个序列,但是python可以用负数做下标序列,最后一个下标为-1,之前的为-2,以此类推。  2.1列表  ...
  • 列表:[],类似于其他语言中的数组,可以一维列表,也可以二维列表,字符串列表可以代入到for循环和if判断里,每次取出一个字符串 ...列表可用[:]实现列表切片功能,从下标下标负数也可以,最后一...
  • 05python字符串

    2019-08-10 22:08:49
    一、字符串 字符串实际上就是字符的数组,所以也支持下标索引 name = 'abcdef' ...注意索引为负数时,代表逆序 切片:切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持...
  • Python----序列简介

    2021-01-24 21:20:00
    python的索引可以有负数,当索引为负值时,是从-1开始而不是从0开始即最后一个元素的下标为-1 例: verse = ["啦啦啦","哈哈哈","哇哇哇","哦哦哦"] print(verse[2]) print(verse[-1]) 运行结果为 切片 切片操作是...
  • 题目: 给定一个长度为n的数组,包含从0-n的整数...即对数组进行遍历,将下标为当前整数的数字取负。这样既能保存原数组的值,也可以保存该数是否被包含的信息。 代码(Python): class Solution(object): def mi
  • 利用数组下标,将检索过的数字对应下标位置的内容存储原数字的负数。这样既能保存原数字的大小,又能存储到该数字是否存在的信息。 代码: class Solution(object): def findDuplicate(self, num
  • leetcode--python--746

    2021-03-03 21:18:35
    使用最小花费爬楼梯 数组的每个下标作为一个阶梯,第 i 个阶梯...在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯 2种方法 class Solution: def minCostClimbingStairs(self, cost: List[int]) -> int:
  • 力扣204周周赛题解上题目思路与算法代码实现写在最后 ...本题也是模拟题,典型的动态规划题目,状态很明显就是当前位置结尾的乘积正数或者负数的最大长度,转移的过程也注意就是正数和负数的转移过程,小学
  • python笔记1

    2009-07-15 13:03:00
    一种解释性的面向对象的语言。强类型,虽然它的变用...list(列表,定义[]),相当于c++中的vector或者c中的数组。其下标0开始,并且可以使用负数。用单引号或双引号构成字符串。用三个连续的双引号在一起可以定义很长

空空如也

空空如也

1 2
收藏数 39
精华内容 15
关键字:

python数组下标为负数

python 订阅