我目前在Python中运行以下代码。我需要知道的是如何将y
的值存储在行V=max(u(j) + y for y in set2)
中。此行获取set1和set2的每个值的最大总和。换句话说,对于代码的第一次迭代,其中最大值为3(对于set1为1,对于set2为2),那么我想将数字2存储在某处。
set1=[1,2,3]
set2=[1,2]
u=lambda c: c**(1)
for j in set1:
V=max(u(j) + y for y in set2)
print (V)
else:
V=0
我知道一个解决方案是做一个额外的循环,我更喜欢在一行中完成。
问候,
答案 0 :(得分:0)
您可以在某个容器中保留y
(tuple
是这里的自然选择):
>>> set1 = [1,2,3]
>>> set2 = [1,2]
>>> def u(c): return c**(1)
...
>>> for j in set1:
... V, y = max((u(j) + y, y) for y in set2)
... print(V, y)
...
3 2
4 2
5 2
顺便说一句,我不知道你的else子句应该做什么,但我希望你知道它总是被执行,所以V
总是0。
另请注意,赋值左侧的y
与生成器表达式中的y
没有任何关系,后者具有自己的作用域。我可以随心所欲地调用它:
>>> for j in set1:
... V, fish = max((u(j) + y, y) for y in set2)
... print(V, fish)
...
3 2
4 2
5 2