【问题标题】:Subtracting values from lists, received "generator object is not subscriptable" error从列表中减去值,收到“生成器对象不可下标”错误
【发布时间】:2021-09-12 03:27:59
【问题描述】:

我正在尝试将两个列表的值相减。像这样:

    a = [1,2,3,4,5] b = [1,2,3,4,5] 
    a - b = [0,0,0,0,0] 

但是,我尝试执行的循环不断给我“生成器对象不可下标”并引用我的代码的这一部分:

      distances_1 = [a[z] - b[z] for z in x]

我的样本数据在每个文件的维度上都不同;不过,这里有一个例子:

    x = [1.2323 2.5689] y = [2.3565 3.58789]

这是我的代码示例:

    def distances_z(x,y):
    dct = {}
    for i in y:
        a = (i.split(' ',)[0] for i in y)
        for z in x:
            b = (z.split(' ',1)[0] for z in x)
            distances_1 = [a[z] - b[z] for z in x]
            return distances_1
        dct[i +"_"+"list"] = [distances_1]
    print(dct)
    return dct

我认为这是我的ab 变量未被识别为整数的问题。我尝试使用float() 将它们转换为浮点数,但它不起作用。

【问题讨论】:

  • 您将生成器(通过生成器表达式)分配给 a 和 b。你看。 G。 list(a) 从生成器创建一个列表,或者只使用列表推导而不是生成器表达式。
  • 目前 ab 是生成器,因为您使用了括号。使用括号使它们列出理解。见generator expressions vs list comprehensions

标签: python list generator-expression


【解决方案1】:

试试这个

a = [1,2,3,4,5] 
b = [1,2,3,4,5] 
c = [x[0] - x[1] for x in zip(a,b)]

给出输出

[0, 0, 0, 0, 0]

【讨论】:

    猜你喜欢
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    相关资源
    最近更新 更多