鱼C论坛

 找回密码
 立即注册
查看: 799|回复: 9

[已解决]举例:get_digits(12345) ==> [1, 2, 3, 4, 5]

[复制链接]
发表于 2020-5-19 15:07:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#1、 写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。
#举例:get_digits(12345) ==> [1, 2, 3, 4, 5]
result = []

def get_digits(num):
   

    if num:
        result.insert(0, num%10)
        return get_digits(num//10)
    else:
        return result
            
print(get_digits(12345))



#2、 写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。
#举例:get_digits(12345) ==> [1, 2, 3, 4, 5]
def get_digits(num):

    result = []

    if num:
        result.insert(0, num%10)
        return get_digits(num//10)
    else:
        return result
            
print(get_digits(12345))


这两组代码有什么不同,为什么结果不一样
最佳答案
2020-5-19 15:08:53
本帖最后由 Twilight6 于 2020-5-19 15:12 编辑


第一个result 是全局变量  第二个 result 是局部变量

第二个每次递归都会重新被赋值 result = [] 导致你直接返回result 为空

递归那每次记得加上每次递归的result即可
6cdba0e4fdd667f36f205ddc62bee1b.png
a2f1b2221e7ee9668f602ac466c35e2.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-19 15:08:53 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-5-19 15:12 编辑


第一个result 是全局变量  第二个 result 是局部变量

第二个每次递归都会重新被赋值 result = [] 导致你直接返回result 为空

递归那每次记得加上每次递归的result即可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-5-19 15:11:10 | 显示全部楼层
def get_digits(num):

    result = []

    if num:
        result.insert(0, num%10)
        return get_digits(num//10)+result  # 这里要加回result  因为每次递归 result 都会 =[] 所以导致你这种方法返回的是 []
    else:
        return result

print(get_digits(12345))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-5-19 15:14:42 | 显示全部楼层
>>> s
123456
>>> t=list(str(s))
>>> t
['1', '2', '3', '4', '5', '6']

评分

参与人数 1荣誉 +1 收起 理由
Twilight6 + 1 帮你破4000荣誉 哈哈强迫症福利

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 15:17:54 | 显示全部楼层
wp231957 发表于 2020-5-19 15:14
>>> s
123456
>>> t=list(str(s))

t=[int(i)for i in str(s)]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 15:18:35 | 显示全部楼层
Twilight6 发表于 2020-5-19 15:08
第一个result 是全局变量  第二个 result 是局部变量

第二个每次递归都会重新被赋值 result = [] 导 ...

还真是4000   谢谢了

评分

参与人数 1荣誉 -1 收起 理由
Twilight6 -1 嘿嘿

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 15:18:54 | 显示全部楼层
wp231957 发表于 2020-5-19 15:18
还真是4000   谢谢了

啊啊啊 4001  了 不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 15:20:06 | 显示全部楼层

应该是一样的东东吧,list()内部机制 估计也和这个差不多

评分

参与人数 1荣誉 +4 收起 理由
Twilight6 + 4 哈哈

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 15:24:52 | 显示全部楼层
wp231957 发表于 2020-5-19 15:20
应该是一样的东东吧,list()内部机制 估计也和这个差不多

哈,确实是差不多
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 18:00:36 From FishC Mobile | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-19 15:17
t=

初级列表推导式……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-21 06:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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