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

Python随机生成列表无法修改问题咨询

Python随机生成列表无法修改问题咨询

嘿,我最近在折腾本地K8s集群,写了个简单的容器化小应用,核心功能就是反转一个数组(提前打个招呼:我可能会把“列表”和“数组”混着用哈😅)。

我先写了两个工具函数:一个用来生成包含随机整数的列表,另一个用来反转这个列表,代码如下:

from random import randint

def reverse_array(input):
    i=0
    arr_length = len(input)
    last_index = arr_length - 1
    while i < arr_length / 2:
        temp = input[i]
        input[i] = input[last_index - i]
        input[last_index - i] = temp
        i=i+1
    return input

def generate_random_array(max_iteration):
    return [randint(0, 100) for _ in range(0, max_iteration)]

这两个函数我都写了单元测试,测试下来是正常工作的。但在主程序里调用它们的时候,好像遇到了问题(代码写到一半卡住了):

import util.misc as misc
from time import sleep

while True:
    input_arr = misc.generate_random_array(5)
    reversed_arr = misc.reverse_array(input_...

我现在的困惑是:明明单元测试里函数都正常,为什么在主程序里调用的时候,生成的随机列表没法正常被反转呢?或者是不是我哪里的写法有问题?


可能的问题排查与解决方向

  1. 变量名拼写错误:从你截断的代码来看,reverse_array的参数写的是input_...,但你生成的变量明明是input_arr,大概率是拼写没写完或者打错了,把参数改成input_arr应该就能正常调用了:

    reversed_arr = misc.reverse_array(input_arr)
    
  2. 原地修改的副作用:你的reverse_array函数是原地修改输入列表,然后再返回它本身。也就是说,调用之后原来的input_arr也会变成反转后的状态,如果想保留原列表的话,可以在反转前先复制一份:

    # 方法1:用copy()方法复制
    reversed_arr = misc.reverse_array(input_arr.copy())
    # 方法2:用切片语法复制
    reversed_arr = misc.reverse_array(input_arr[:])
    
  3. 导入路径验证:如果你的util/misc.py文件结构不符合Python的导入规则,也可能导致函数调用失败,可以检查下项目目录结构,确保util文件夹下有__init__.py(Python 3.3+可以不用,但加上更稳妥),且主程序的位置能正确找到util模块。

小优化建议

另外,你的reverse_array函数里的判断条件i < arr_length / 2,如果是奇数长度的列表,arr_length/2会得到浮点数(比如长度5的话是2.5),虽然循环到i=2时交换自己和自己不影响结果,但改成整数除法i < arr_length // 2会更严谨:

def reverse_array(input):
    i = 0
    arr_length = len(input)
    last_index = arr_length - 1
    while i < arr_length // 2:  # 改用整数除法
        temp = input[i]
        input[i] = input[last_index - i]
        input[last_index - i] = temp
        i += 1  # 这里也可以写成i +=1更简洁
    return input

备注:内容来源于stack exchange,提问作者Dasph

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 11:24:41