Python 3.x Python-分配变量

Python 3.x Python-分配变量,python-3.x,function,variables,Python 3.x,Function,Variables,我有一个树形图,如上所示: 我的数据:Vnew=[12,13,14,15,16]-没有可用的坐标 `V =[1,2,3,4,5,6,7,8,9,10,11]` -此列表中的每个点都有预定义的坐标 我需要什么: 1) 以变量形式为Vnew中的每个点分配坐标;例如: newpos = {(x0,y0):12,(x1,y1):13,(x2,y2):14,(x3,y3):15,(x4,y4):16} 这里每个(xi,yi)都是一个变量 2) 我需要定义一个函数,它是每个有边的点之间

我有一个树形图,如上所示:

我的数据
Vnew=[12,13,14,15,16]
-没有可用的坐标

     `V =[1,2,3,4,5,6,7,8,9,10,11]` 
-此列表中的每个点都有预定义的坐标

我需要什么: 1) 以变量形式为
Vnew
中的每个点分配坐标;例如:

   newpos = {(x0,y0):12,(x1,y1):13,(x2,y2):14,(x3,y3):15,(x4,y4):16}
这里每个
(xi,yi)
都是一个变量

2) 我需要定义一个函数,它是每个有边的点之间欧氏距离的总和。对于给定的示例,我的函数是

              `f(x,y) = ED(12,13)+ED(13,3)+ED(12,15)+ED(15,10)` 
其中
x=[x0,x1,x2,x3]
y=[y0,y1,y2,y3]
ED
是欧几里德距离

我试着将变量指定为

Vnew = [12,13,14,15,16]
d = {}
for v in Vnew: 
    for i in range(5):
        d[('x' + str(i),'y' + str(i))]= v
    print (d)
但这给了我一些不正确的东西

{('x0', 'y0'): 12, ('x1', 'y1'): 12, ('x2', 'y2'): 12, ('x3', 'y3'): 12, ('x4', 'y4'): 12}
{('x0', 'y0'): 13, ('x1', 'y1'): 13, ('x2', 'y2'): 13, ('x3', 'y3'): 13, ('x4', 'y4'): 13}
{('x0', 'y0'): 14, ('x1', 'y1'): 14, ('x2', 'y2'): 14, ('x3', 'y3'): 14, ('x4', 'y4'): 14}
{('x0', 'y0'): 15, ('x1', 'y1'): 15, ('x2', 'y2'): 15, ('x3', 'y3'): 15, ('x4', 'y4'): 15}
{('x0', 'y0'): 16, ('x1', 'y1'): 16, ('x2', 'y2'): 16, ('x3', 'y3'): 16, ('x4', 'y4'): 16}
有人能帮我做这两件事吗?

只需从以下位置获取它们:

给你一个

对于您想要的东西,它在python中是不可能的,请看一下这个

由于整数在python中是不可变的,所以当您使用变量构建列表或元组时,python会将它们绑定到变量所指向的当前值。因此,当您修改变量时,再添加一个,python真正做的是创建另一个整数或从现有整数中进行选择(整数不能变化),并使变量指向该整数,因此在列表和元组中,您将失去该轨迹

总之,只需将
字符串
与变量的名称一起使用,然后使用它们通过
变量访问当前变量值

仅从以下位置访问它们:

给你一个

对于您想要的东西,它在python中是不可能的,请看一下这个

由于整数在python中是不可变的,所以当您使用变量构建列表或元组时,python会将它们绑定到变量所指向的当前值。因此,当您修改变量时,再添加一个,python真正做的是创建另一个整数或从现有整数中进行选择(整数不能变化),并使变量指向该整数,因此在列表和元组中,您将失去该轨迹

总之,只需将
字符串
与变量名称一起使用,然后使用
变量访问当前变量值

Vnew = [12,13,14,15,16]
d = {}
for i, v in enumerate(Vnew): 
    d[('x' + str(i),'y' + str(i))]= v
    print (d)
也许像

Vnew = [12,13,14,15,16]
d = {}
for i, v in enumerate(Vnew): 
    d[('x' + str(i),'y' + str(i))]= v
    print (d)

谢谢你,山姆!我现在如何开始我的第二个要求?@ccc您具体希望
ED()
返回什么?它是每条边的欧几里德距离。谢谢Sam!我现在如何开始我的第二个要求?@ccc你具体希望
ED()
返回什么?这是每一条边的欧几里德距离。这是很多v,你不是刚刚覆盖了它吗?@SamRedway,是的,这是一个bug,我正在编写实时示例,谢谢你指出它:)谢谢Daniel!!我从这个代码中得到的是{(0,0):12,(1,1):13,(2,2):14,(3,3):15,(4,4):16}。但我想用''0,0'作为变量坐标;'(x1,y1)'.@ccc,那么只需使用字符串来存储它们,并使用
vars
作为双字典,将字符串作为键始终,在我的代码中,您可以获得变量的值,因为它们是int,并且在python中是不可变的。在python中你不会得到你所想的,你不能有一个带变量的元组。那是很多v,你不是只是覆盖了它吗?@SamRedway,是的,这是一个bug,我正在编写一个实时示例,谢谢你指出它:)谢谢Daniel!!我从这个代码中得到的是{(0,0):12,(1,1):13,(2,2):14,(3,3):15,(4,4):16}。但我想用''0,0'作为变量坐标;'(x1,y1)'.@ccc,那么只需使用字符串来存储它们,并使用
vars
作为双字典,将字符串作为键始终,在我的代码中,您可以获得变量的值,因为它们是int,并且在python中是不可变的。你不会得到你在python中的想法,你不能有一个带有变量的元组。
Vnew = [12,13,14,15,16]
d = {}
for i, v in enumerate(Vnew): 
    d[('x' + str(i),'y' + str(i))]= v
    print (d)