【发布时间】:2023-03-03 07:24:23
【问题描述】:
遇到这个令人沮丧的问题,我想通过以下列表中的元组 通过我创建的类的另一个实例列表上的方法
list_1=[(0, 20), (10, 1), (0, 1), (0, 10), (5, 5), (10, 50)]
instances=[instance[0], instance[1],...instance[n]]
results=[]
pos_list=[]
for i in range(len(list_1)):
a,b=List_1[i]
result=sum(instance.method(a,b) for instance in instances)
results.append(result)
if result>=0:
pos_list.append((a,b))
print(results)
print(pos_list)
问题是所有实例都采用 same 元组,而我希望第一个实例上的方法采用第一个元组,依此类推。 如果总和>0,我最终希望看到它附加到新列表(pos_list)。
有人知道我怎样才能正确地迭代这个吗?
编辑 如果我也打印总和的结果会更清楚。
基本上我希望总和执行如下:
result = instance[0].method(0,20), instance[1].method(10,1), instance[2].method(0,1), instance[3].method(0,10), instance[4].method(5,5), instance[5].method(10,50)
对于信息,该方法只是两个值的 +/- 乘积,具体取决于实例的属性。 所以上面的结果是:
result = [0*20 - 10*1 - 0*1 + 0*10 - 5*5 + 10*50] = [465]
pos_list=[(0, 20), (10, 1), (0, 1), (0, 10), (5, 5), (10, 50)]
除了实际做的是对所有实例使用相同的元组,如下所示:
result = instance[0].method(0,20), instance[1].method(0,20), instance[2].method(0,20), instance[3].method(0,20), instance[4].method(0,20), instance[5].method(0,20)
result = [0*20 - 0*20 - 0*20 + 0*20 - 0*20 + 0*20] = [0]
pos_list=[]
对于 (10,1) 等等。
如何使它像第一个示例一样工作?
【问题讨论】:
-
嗨!你能更明确地说明总和吗?是否要将元组第一个元素上第一个实例的
method的结果与元组第二个元素上第二个实例的method的结果相加,等等?并对list_1的每一项重复此操作,再次考虑整个列表l1? -
嗨,是的,没错!我的问题是每个循环的所有实例都使用一个元组,我试图考虑如何让它一个接一个地进行(即第一个实例到第一个元组等等)
-
但是以这种方式每次迭代的总和结果都会相同,因此将所有元素附加到
pos_list或不附加。 -
知道我可以做些什么不同的事情来得到我想要的吗?
-
您应该更详细地解释您的想法,添加输入和预期输出的示例
标签: python-3.x list object iterator instance