如何修改Python代码实现每次调用子程序生成新列表(禁用3D数组)
如何让Python子程序每次调用都生成并保存新列表?
你的现有代码其实每次调用lemon函数时已经在创建新的week列表了,但问题在于这个列表是函数内部的局部变量,调用结束后就会被销毁,没法保留下来供后续使用。要解决这个问题,只需要让函数返回生成的列表,然后把每次调用的结果存储起来就行,完全不需要用到3D数组。
修改后的代码方案
首先更新函数,让它返回生成的列表,同时优化一下代码的简洁性:
def lemon(a, b): # 用f-string让提示文本更易读,修正拼写错误 unsplit_data = input(f"Input the data for week {a} for {b} in order of bus A, bus B etc. Separate these by a comma and a space eg. '1, 2, ': ") # 用列表推导式一次性转换为整数列表,替代逐个赋值的繁琐写法 week = [int(num) for num in unsplit_data.split(', ')] print(week) return week # 返回新生成的列表,方便外部保存
然后调用函数时,把每次的结果收集到一个普通列表中(这是2D列表,不属于3D数组,符合你的任务限制):
# 用来存储所有生成的列表 all_generated_lists = [] # 第一次调用,保存结果 all_generated_lists.append(lemon('1', 'Monday')) # 第二次调用,生成新列表并保存 all_generated_lists.append(lemon('2', 'Tuesday')) # 可以继续调用更多次... # 查看所有保存的列表 print("\nAll generated lists:") for i, lst in enumerate(all_generated_lists, 1): print(f"List {i}: {lst}")
为什么这样可行?
- 每次调用
lemon函数时,函数内部都会创建一个全新的week列表,不会和之前调用的列表产生冲突。 - 通过
return week把这个新列表传递到函数外部,再用append方法把它加入到all_generated_lists中,这样就永久保存了每次生成的新列表。 - 整个方案只用了2D列表(列表的列表),完全没有使用3D数组,满足你的任务要求。
内容的提问来源于stack exchange,提问作者Harry Mclellan
相关产品推荐
相关产品推荐

