You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

非嵌套传递函数:实现随机列表生成与中间元素截取

问题解决:局部变量访问错误与列表切片修正

核心问题

  1. 局部变量无法外部访问:list1是main函数内部的局部变量,外部直接调用change_list(list1)会触发NameError,因为外部作用域不存在这个变量。
  2. 切片范围不符合需求:原切片list1[3:8]仅截取5个元素,无法得到中间6个元素。

修正后的完整代码

import random

def main():
    list1 = []
    for count in range(12):
        number = random.randint(50, 100)
        list1.append(number)
    print('Here is a list of random integers...\n', list1)
    print('The 4th element in the list is', list1[3])
    print('The element at index 9 is', list1[9])
    print('The smallest element in the list is', min(list1))
    # 返回生成的列表,供外部函数调用
    return list1

def change_list(list1):
    # 12个元素的列表,中间6个对应索引3到9(左闭右开,包含3-8共6个元素)
    middle_elements = list1[3:9]
    print('中间6个元素:', middle_elements)

# 先获取main生成的列表,再传入change_list
my_list = main()
change_list(my_list)

关键修正点

  • 给main函数添加返回值,将内部生成的list1传递到外部作用域,再通过变量传给change_list,解决作用域问题。
  • 调整切片为list1[3:9]:12个元素的索引范围是0-11,中间6个元素从第4个(索引3)开始,到第9个(索引8)结束,切片左闭右开,所以结束索引设为9,刚好截取6个元素。
  • 原代码中for item in list1: item = 12无实际作用,因为循环变量item只是元素的临时副本,修改它不会改变原列表,可根据需求保留或删除。

内容的提问来源于stack exchange,提问作者confused

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 17:53:12