创建多个变量

And*_*iaz 0 python variables for-loop

我想用forPython 创建10个变量(不是数组).像这样的东西:

for i in range(1,10,1)
    variable i = 100 / i
    print variable i
Run Code Online (Sandbox Code Playgroud)

我想创建的变量名,在这种情况下: variable1,variable2,variable3,...,variable10 我不想一个数组

我有一张坐标图(640 x 480).我正在识别像素颜色为白色的坐标.地面上有3个球,我想得到每个球的中心坐标,所以如果被评估的坐标与最后一个坐标相近,那么如果坐标属于a,则x和y坐标将被平均.新球的坐标属于一组新的坐标将被评估.

p=0
h=0
for j in range(1,480,1):
   for i in range(1,640,1):
      c=cv.Get2D(image,j,i)
      if c[0] == 255:
        old_coord X  = new_coord x
        new_coord x += [(i,j)]
        if (old_coord x - 5 < new_coord x < old_coord x + 5)
            averx x = averx x + i
            avery x = averx x + j
            count x = count x + 1
        else
            p = p + 1
            new_coord x += [(i,j)]
average(averx1 , count 1)
average(avery1 , count 1)
average(averx2 , count 2)
average(avery2 , count 2)
Run Code Online (Sandbox Code Playgroud)

unu*_*tbu 9

永远不要创建编号的变量名(可能是1或2,但从不是9.)而是使用列表或字典:

x = dict()
for i in range(1,10,1)
    x[i] = 100 / i
    print x[i] 
Run Code Online (Sandbox Code Playgroud)

(我在这种情况下使用了一个dict,因为i从1开始.)但是,根据你希望如何x进一步使用,你可能想要使用一个列表.


也许我应该试着说服你,有变量命名variable1,variable2等是一个坏主意.由于这些变量已编号,因此它们之间可能存在某种密切关系.也许他们都是数字.假设您想要将所有这些增加一个.你必须编写重复的代码,如

variable1 += 1
variable2 += 1
variable3 += 1
... etc
Run Code Online (Sandbox Code Playgroud)

代替

for i in range(1,10,1):
    x[i] += 1
Run Code Online (Sandbox Code Playgroud)

或者您可能希望将所有这些变量都提供给函数.你必须写

func(variable1, variable2, variable3, ...)
Run Code Online (Sandbox Code Playgroud)

代替

func(**x)
Run Code Online (Sandbox Code Playgroud)

结论:编号变量名称很痛苦!使用字典或列表可以避免痛苦.


tac*_*ell 6

你不应该这样做,但如果你真的想要,你可以

for j in range(1,10,1):
    exec('var_%d = j'%j)
Run Code Online (Sandbox Code Playgroud)

我能否再次强调你不应该这样做,但我认为没有理由隐藏自己上吊的能力。

鉴于您正在尝试做的事情,我会研究morphological operations。对于您要执行的操作,有更好的算法。(看起来你想要做的已经在scipyexamples 中)。


引用 unutbu:

也许我应该试着说服你,有变量命名variable1variable2等是一个坏主意。由于这些变量已编号,因此它们之间可能存在某种密切关系。也许它们都是数字。假设您想将所有这些都加一。您必须编写重复的代码,例如

variable1 += 1
variable2 += 1
variable3 += 1
... etc
Run Code Online (Sandbox Code Playgroud)

代替

for i in range(1,10,1):
    x[i] += 1
Run Code Online (Sandbox Code Playgroud)

或者,您可能想将所有这些变量输入到一个函数中。你必须写

func(variable1, variable2, variable3, ...)
Run Code Online (Sandbox Code Playgroud)

代替

func(**x)
Run Code Online (Sandbox Code Playgroud)

结论:给变量名编号是很痛苦的!使用字典或列表来避免痛苦。