【发布时间】: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
我认为这是我的a 和b 变量未被识别为整数的问题。我尝试使用float() 将它们转换为浮点数,但它不起作用。
【问题讨论】:
-
您将生成器(通过生成器表达式)分配给 a 和 b。你看。 G。
list(a)从生成器创建一个列表,或者只使用列表推导而不是生成器表达式。 -
目前
a和b是生成器,因为您使用了括号。使用括号使它们列出理解。见generator expressions vs list comprehensions
标签: python list generator-expression