为什么python最后一个元素下标是负一_Python负下标

在Python和Ruby中,负下标从数组末尾向后索引。也就是说,当下标为负时,数组长度将加到它上面。在

Lua的情况并非如此。负下标没有特殊含义;它只是引用或创建一个以负数为键的表项。在

Python 2.7.3:>>> a = [ 'x', 'y', 'z' ]

>>> a

['x', 'y', 'z']

>>> a[-1]

'z'

>>> a[-1] = 'm'

>>> a

['x', 'y', 'm']

>>>

Ruby 1.9.3版:

^{pr2}$

Lua 5.2.3:> a = { 'x', 'y', 'z' }

> for key, value in pairs(a) do print( key, value ) end

1 x

2 y

3 z

> print( a[3] )

z

> print( a[-1] )

nil

> a[-1] = 'm'

> print( a[-1] )

m

> for key, value in pairs(a) do print( key, value ) end

1 x

2 y

3 z

-1 m

>

JavaScript的行为与Lua非常相似,可以在数组上使用负下标,事实上可以使用任意字符串作为下标。JavaScript数组实际上是一个具有一些附加方法、属性(.length)和行为(根据需要更新.length)的对象。当您使用array[-1]时,您正在添加或引用带有键"-1"的属性,.length不会更新。在

铬33:> var a = [ 'x', 'y', 'z' ];

undefined

> a

["x", "y", "z"]

> a[2]

"z"

> a[-1]

undefined

> a[-1] = 'm'

"m"

> a[-1]

"m"

> a[2]

"z"

> a

["x", "y", "z"]

> for( var key in a ) console.log( key, a[key] );

0 x

1 y

2 z

-1 m

undefined

不要被末尾打印的undefined误导——这不是for( var key in a )枚举的一部分,它只是在那里打印,因为console.log()是循环中计算的最后一个表达式,它不返回值(它只是打印值)。在

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值