鱼C论坛

 找回密码
 立即注册
查看: 2973|回复: 14

python用递归分解数组,结果有点意外

[复制链接]
发表于 2014-7-12 19:50:29 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 欣欣celin 于 2014-7-15 21:58 编辑

result = []
def getDigits(n):
    if n > 0:
        result.insert(-1, n%10)  #在数组-1位置,插入n%10的值???
        getDigits(n//10)

getDigits(1234567)
print(result)

那么为什么运行的结果是:
>>>
[6, 5, 4, 3, 2, 1, 7]

而不是[7,6, 5, 4, 3, 2, 1] {:7_154:}??

最佳答案

查看完整内容

详细请查询函数insert(i, x) : Insert a new item with value x in the array before position i. Negative values are treated as being relative to the end of the array. result.insert(-1, n%10)表示每次将“n%10”插入到最后一个位置之前,即插入到倒数第二个位置处
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-12 19:50:30 | 显示全部楼层
详细请查询函数insert(i, x) :
Insert a new item with value x in the array before position i. Negative values are treated as being relative to the end of the array.
result.insert(-1, n%10)表示每次将“n%10”插入到最后一个位置之前,即插入到倒数第二个位置处
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-12 21:07:55 | 显示全部楼层
  1. >>> result = []
  2. >>> def getDigits(n):
  3.         if n > 0:
  4.                 result.insert(0,n%10)#数组是从0开始的
  5.                 getDigits(n//10)

  6. >>> getDigits(1234567)
  7. >>> print(result)
  8. [1, 2, 3, 4, 5, 6, 7]
复制代码


望采纳!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-7-12 21:23:40 | 显示全部楼层

但还是想知道,为什么传入起始地址为-1时,它不是倒序执行呢?{:7_154:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-12 21:32:31 | 显示全部楼层
本帖最后由 swl19880916 于 2014-7-14 13:54 编辑
  1. result = []
  2. def getDigits(n):
  3.     if n > 0:
  4.         getDigits(n//10)
  5.         result.insert(-1, n%10)  #在数组-1位置,插入n%10的值???
  6.         
  7. getDigits(1234567)
  8. print(result)
复制代码

居然是错的,真不好意思。求QQ群。我把这问题理解错误了,索引-1是索引的最后一位,真是抱歉,对不起。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-14 14:25:58 | 显示全部楼层
可能insert方法对于负数位置的插入默认就是这样定义的,其实程序可以直接append()的
result = []
def getDigits(n):
    if n > 0:
        result.append( n%10)  
        getDigits(n//10)

getDigits(1234567)
print(result)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-15 16:25:00 | 显示全部楼层
主要就是插入位置的原因,想要得到理想的输出结果,下面的代码可以实现:
result = []
def getDigits(n):
    if n > 0:
        result.insert(len(result), n % 10)
        getDigits(n // 10)

getDigits(1234567)
print(result)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-7-15 21:48:08 | 显示全部楼层
swl19880916 发表于 2014-7-12 21:32
居然是错的,真不好意思。求QQ群。我把这问题理解错误了,索引-1是索引的最后一位,真是抱歉,对不起。

没关系,谢谢回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-7-15 21:56:16 | 显示全部楼层
hfut_wangfei 发表于 2014-7-12 19:50
详细请查询函数insert(i, x) :
Insert a new item with value x in the array before position i. Negati ...

原来如此:handshake
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-15 21:58:36 | 显示全部楼层
也是查看函数说明的:handshake
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-7-15 22:00:29 | 显示全部楼层
hfut_wangfei 发表于 2014-7-15 21:58
也是查看函数说明的

哈哈,起码你想到了去查,偶只想到去问,就是棋高一着吖
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-15 23:18:31 | 显示全部楼层
欣欣celin 发表于 2014-7-15 22:00
哈哈,起码你想到了去查,偶只想到去问,就是棋高一着吖

你太客气啦:handshake
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-7-16 21:51:08 | 显示全部楼层

:handshake日后还请多多指教{:7_182:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-17 10:15:35 | 显示全部楼层
欣欣celin 发表于 2014-7-16 21:51
日后还请多多指教

日后有问题再多多交流:handshake
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-7-17 21:44:34 | 显示全部楼层
hfut_wangfei 发表于 2014-7-17 10:15
日后有问题再多多交流

{:1_1:},嗯,一定发贴提问:big
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 20:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表