如何在python3中通过for循环在spatial.distance.euclidian()中创建变量并使用arg

时间:2017-12-13 07:25:51

标签: python-3.x python-3.6


第一个问题是如何在python3中通过for循环创建变量 我提供了示例结果。

box1 = [1.0, 2.0, 3.0]
box2 = [2.0, 4.0, 6.0]
box3 = [3.0, 6.0, 9.0]

虽然我尝试编码,但python3说SyntaxError: can't assign to operator 我的代码:

for i in range(1, 4):
    box + str(i) = [i*i, (i+1)*i, (i+2)*i]


第二个问题是如何在python3中通过for循环在spatial.distance.euclidian()中使用arg。

spatial.distance.euclidian是scipy方法。
试过我的代码:

for i in range(1, 4):    
    print(spatial.distance.euclidian(box1, box + str(i)))

请借我的手。

1 个答案:

答案 0 :(得分:0)

第一个问题:显而易见的答案是使用数据字典。使用dict comprehension

box = {i: [i*i, (i+1)*i, (i+2)*i] for i in range(1,4)}

如果你真的想拥有像box_1,box_2等变量,比如

for i in range(1,4):
    exec('box_' + str(i) + ' = [' + str(i*i) + ']')

是必需的。

第二个问题: 使用itertools.combinations,您可以从键创建所有对,然后计算相应列表的距离。

from itertools import combinations
from scipy.spatial.distance import euclidean

for a, b in combinations(box.keys(), 2):
    print(euclidean(box[a], box[b]))