实现字母数组转句子单词函数报错:'function' object is not subscriptable 求助
字母数组组合单词函数的错误修复
错误原因分析
- 核心报错原因:你调用
np.transpose(arrAdder)时,传入的是函数自身arrAdder而非函数参数arr,导致程序试图对函数对象执行数组操作,触发了**“函数对象不可下标访问”**的错误。 - 逻辑错误:内部函数
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
相关产品推荐
相关产品推荐

