如何让嵌套列表的分类预测结果保持原嵌套结构?
如何保持嵌套列表结构的分类结果
现有嵌套列表:
comment = [['a', 'b', 'c'], ['d', 'e', 'f', 'g'], ['h']]
存在一个classify_predict函数,可将comment中的每个元素分类为0、1或2。当前使用如下代码遍历处理:
class = [] for i in range(0, len(comment)) for j in range(0, len(comment[i])) result = classify_predict(comment[i][j]) class.append(result)
当前输出结果:得到一维列表,与原嵌套列表结构不匹配:
print(class) [0, 1, 0, 1, 1, 1, 1, 1]
期望输出结果:得到与原列表结构一致的嵌套分类结果:
print(class) [[0, 1, 0], [1, 1, 1, 1], [1]]
解决方案
方法1:修改原有循环逻辑
原代码直接将所有结果追加到同一个列表,导致嵌套结构丢失。需要为每个子列表单独创建结果容器,处理完子列表内所有元素后,再将该容器加入最终结果:
class_result = [] # 避免使用`class`作为变量名,它是Python内置关键字 for sub_list in comment: sub_result = [] for item in sub_list: sub_result.append(classify_predict(item)) class_result.append(sub_result)
方法2:使用列表推导式(更简洁)
利用Python嵌套列表推导式,可一行代码实现结构保留的转换,逻辑与方法1完全一致:
class_result = [[classify_predict(item) for item in sub_list] for sub_list in comment]
执行上述任意一种方法后,打印class_result即可得到与原列表结构匹配的嵌套分类结果。
内容的提问来源于stack exchange,提问作者Honeybee
相关产品推荐
相关产品推荐

