如何对嵌套数组的每个元素应用自定义函数?
解决嵌套数组元素批量应用自定义函数的问题
你的核心问题是原列表推导式只遍历了外层数组的子列表,没有深入到子列表的每个元素就直接调用myfunc,导致函数接收的是整个子列表而非单个元素。
最佳实现方案
最直观且可读性强的方式是使用嵌套列表推导式,外层遍历每个子列表,内层遍历子列表中的每个元素并应用myfunc:
[[myfunc(item) for item in sublist] for sublist in chordsFromGetSet]
示例验证
假设自定义函数为:
def myfunc(s): # 示例功能:将和弦符号转为小写 return s.lower()
代入你的示例数组:
chordsFromGetSet = [['C'],['F','D'],['B']] result = [[myfunc(item) for item in sublist] for sublist in chordsFromGetSet] print(result) # 输出:[['c'], ['f', 'd'], ['b']]
替代方案(基于map函数)
如果你习惯用map,也可以结合列表推导式实现,代码更简洁但可读性稍弱:
[list(map(myfunc, sublist)) for sublist in chordsFromGetSet]
这里map(myfunc, sublist)会把子列表中的每个元素传入myfunc处理,再通过list()将map对象转为列表,最终保持原有的嵌套结构。
内容的提问来源于stack exchange,提问作者whitebear
相关产品推荐
相关产品推荐

