代码之家  ›  专栏  ›  技术社区  ›  Johanna

Python函数:返回列表列表和简单列表-->ValueError(值太多,无法解包)

  •  1
  • Johanna  · 技术社区  · 7 年前

    我有一个Python函数( 'extract features' )这应该返回两个元素。第一个元素是列表列表: feat_values = [[a, b], [c, d], [e, f]] . 第二个元素是一个简单的列表: feat_names = [1, 2, 3] .

    该函数以以下内容结束:

    return feat_values, feat_names
    

    我将此函数称为:

    feat_values, feat_names = list(map(extract_features, train_data.data))
    

    然而,我得到了“ValueError:太多的值无法解包(预期为2)”。

    出了什么问题?

    1 回复  |  直到 7 年前
        1
  •  2
  •   user2390182    7 年前

    电话

    feat_values, feat_names = list(map(extract_features, train_data.data))
    

    将函数映射到训练数据上,从而返回一个配对列表(这些配对由对函数的每次调用返回):数据中的每个元素对应一个这样的配对。您可能想要实现的是:

    feat_values, feat_names = zip(*map(extract_features, train_data.data))
    

    它将(长)对列表分别转换为这些对的第一个和第二个元素的两个列表。