编写一个循环代码,采用先前定义的实例并创建新实例
writing a recurring code that takes previous defined instance and creates new one
我必须执行如下操作。我有一个实例 v1
,从那以后,我必须通过 运行 某些函数以重复的方式创建其他实例。
v2 = vclass.makesomething(v1,a).attribute1()
v3 = vclass.makesomething(v2,a).attribute1()
v4 = vclass.makesomething(v3,a).attribute1()
.
.
.
我唯一想到的是使用 v+str(i)
之类的变量名称更改,但这是解决问题的糟糕方法。有没有办法为此创建一个循环代码?
可能是我问题措辞不好,不知道该怎么表达问题。
我发现的第二种方法与@Duck 建议的方法一起工作,
vtemplist = [vertex1]
for i in range(number_of_instances_needed)):
vtemplist.append(vclass.makesomething(vtemplist[-1],a).attribute1())
def recur(v, times):
if (times != 0):
v = vclass.makesomething(v,a).attribute1()
return recur(v, times-1)
return v
现在你可以调用 recur
初始值 v
和你想要递归的次数。
编辑:我假设您只对最后一个实例感兴趣。如果没有,您可以使用以下内容,这将 return 一个包含 v
个对象的列表。
def recur(v, times, lst=[]):
if (times != 0):
v = vclass.makesomething(v,a).attribute1()
lst.append(v)
return recur(v, times-1, lst)
return lst
我必须执行如下操作。我有一个实例 v1
,从那以后,我必须通过 运行 某些函数以重复的方式创建其他实例。
v2 = vclass.makesomething(v1,a).attribute1()
v3 = vclass.makesomething(v2,a).attribute1()
v4 = vclass.makesomething(v3,a).attribute1()
.
.
.
我唯一想到的是使用 v+str(i)
之类的变量名称更改,但这是解决问题的糟糕方法。有没有办法为此创建一个循环代码?
可能是我问题措辞不好,不知道该怎么表达问题。
我发现的第二种方法与@Duck 建议的方法一起工作,
vtemplist = [vertex1]
for i in range(number_of_instances_needed)):
vtemplist.append(vclass.makesomething(vtemplist[-1],a).attribute1())
def recur(v, times):
if (times != 0):
v = vclass.makesomething(v,a).attribute1()
return recur(v, times-1)
return v
现在你可以调用 recur
初始值 v
和你想要递归的次数。
编辑:我假设您只对最后一个实例感兴趣。如果没有,您可以使用以下内容,这将 return 一个包含 v
个对象的列表。
def recur(v, times, lst=[]):
if (times != 0):
v = vclass.makesomething(v,a).attribute1()
lst.append(v)
return recur(v, times-1, lst)
return lst