举例:get_digits(12345) ==> [1, 2, 3, 4, 5]
#1、 写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。#举例:get_digits(12345) ==>
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) ==>
def get_digits(num):
result = []
if num:
result.insert(0, num%10)
return get_digits(num//10)
else:
return result
print(get_digits(12345))
这两组代码有什么不同,为什么结果不一样 本帖最后由 Twilight6 于 2020-5-19 15:12 编辑
第一个result 是全局变量第二个 result 是局部变量
第二个每次递归都会重新被赋值 result = [] 导致你直接返回result 为空
递归那每次记得加上每次递归的result即可 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))
>>> s
123456
>>> t=list(str(s))
>>> t
['1', '2', '3', '4', '5', '6'] wp231957 发表于 2020-5-19 15:14
>>> s
123456
>>> t=list(str(s))
t= Twilight6 发表于 2020-5-19 15:08
第一个result 是全局变量第二个 result 是局部变量
第二个每次递归都会重新被赋值 result = [] 导 ...
还真是4000 谢谢了 wp231957 发表于 2020-5-19 15:18
还真是4000 谢谢了
啊啊啊 4001了 不行 永恒的蓝色梦想 发表于 2020-5-19 15:17
t=
应该是一样的东东吧,list()内部机制 估计也和这个差不多 wp231957 发表于 2020-5-19 15:20
应该是一样的东东吧,list()内部机制 估计也和这个差不多
哈,确实是差不多 永恒的蓝色梦想 发表于 2020-5-19 15:17
t=
初级列表推导式……
页:
[1]