函数生成的列表为何无法迭代?Python新手求助
问题分析与解决办法
嘿,刚学Python遇到这种小问题太正常啦,我帮你捋一捋~
你写的函数逻辑其实是能生成1到目标数字的整数列表的,但核心问题是你没有把生成的列表返回出来——你在函数最后用了print(a),这只会在控制台把列表打印出来,但调用函数的时候,它不会把列表作为返回值给到你,所以你没法把它当作正常列表去做后续操作(比如索引、遍历、调用列表方法)。
第一步:修正函数的返回逻辑
把函数里的print(a)改成return a,这样调用函数时就能拿到这个列表了。另外还可以简化你代码里的冗余部分,比如n = x - x + b其实完全等价于n = b,直接用b就行:
def break_up(x): """breaks up the the integers adding up to a number x, starting at 1. Works for any positive number or 0""" a = [] b = 1 while b <= x: a.append(b) b = b + 1 return a
现在你就可以这样用啦:
my_list = break_up(5) print(my_list) # 输出 [1,2,3,4,5] # 也能做列表的常规操作 print(my_list[2]) # 输出 3 my_list.append(6) print(my_list) # 输出 [1,2,3,4,5,6]
第二步:更简洁的Python写法
其实Python里有更高效的方式实现这个需求,用range()函数配合列表转换就行,range(1, x+1)会生成从1到x(包含x)的整数序列,转成列表就是你要的结果:
def break_up(x): """breaks up the the integers adding up to a number x, starting at 1. Works for any positive number or 0""" return list(range(1, x+1))
这个写法更简洁,也符合Python的惯用风格哦~
内容的提问来源于stack exchange,提问作者bicboy
相关产品推荐
相关产品推荐

