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

实现字母数组转句子单词函数报错:'function' object is not subscriptable 求助

字母数组组合单词函数的错误修复

错误原因分析

  1. 核心报错原因:你调用np.transpose(arrAdder)时,传入的是函数自身arrAdder而非函数参数arr,导致程序试图对函数对象执行数组操作,触发了**“函数对象不可下标访问”**的错误。
  2. 逻辑错误:内部函数listToString的逻辑完全失效——循环中每次重置拼接字符串str1,且遍历单个字符时就直接返回,根本无法完成完整单词的拼接,也没有遍历所有转置后的序列来生成全部单词。

修正后的代码(无需numpy,更简洁)

def arrAdder(arr):
    # 用zip转置二维数组,*arr解包原数组的每一行
    transposed_chars = zip(*arr)
    words = []
    for char_group in transposed_chars:
        # 拼接字符并过滤空字符串
        word = ''.join([c for c in char_group if c])
        words.append(word)
    # 将单词组合成句子
    sentence = ' '.join(words)
    print(sentence)
    return sentence

# 测试调用
arrAdder([['J','L','L','M'],['u','i','i','a'],['s','v','f','n'],['t','e','e','']])

运行结果:Just Live Life Man

基于numpy的修正版本

如果你坚持使用numpy,只需修正参数传递并简化逻辑:

import numpy as np
def arrAdder(arr):
    # 转置传入的参数arr,而非函数自身
    trans_arr = np.transpose(arr)
    list1 = trans_arr.tolist()
    words = []
    for char_list in list1:
        word = ''.join([ele for ele in char_list if ele])
        words.append(word)
    sentence = ' '.join(words)
    print(sentence)
    return sentence

# 测试调用
arrAdder([['J','L','L','M'],['u','i','i','a'],['s','v','f','n'],['t','e','e','']])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:36:16