首页 > 解决方案 > NameError:在封闭范围内分配之前引用了自由变量“列表”

问题描述

我正在尝试编写一个十进制缩放函数,该函数接收列表列表作为输入参数。

def decimal_scale(data):
    #calculate the maximum absolute value for each attribute
    grouped_attributes = [list(attributes) for attributes in zip(*data)]

    #absolute list of list grouped attributes
    absolute_attributes = []
    for item in grouped_attributes:
        list = []
        for i in range(0, len(item)):
            list.append(abs(item[i]))
        absolute_attributes.append(list)

    max_att_val = []
    for abs_att_list in absolute_attributes:
        abs_att_list.sort()
        max_att_val.append(abs_att_list[-1])

        #calculate the appropriate k for each attribute
    k_attributes = []
    for max in max_att_val:
        k = 0
        while max/(10**k) > 1:
            k+=1

        k_attributes.append(k) #appropriate ks for all the Attributes

    res = []
    for item in data:
        res.append([item[i]/(10**(k_attributes[i])) for i in range(0, len(item))])
    return res

当我运行此代码时,我收到错误

文件“mynormalize.py”,第 39 行,在

grouped_attributes = [list(attributes) for attributes in zip(*data)]

NameError:在封闭范围内分配之前引用了自由变量“列表”

有人可以建议解决这个问题的方法吗?也许是一种更有效的方法?

标签: python-3.xlist-comprehensiondata-miningdata-manipulation

解决方案


您正在使用列表list = [],更改此列表的名称,它必须工作


推荐阅读