第一个问题是如何在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)))
请借我的手。
答案 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]))