2017-04-03 76 views
0

我目前在Python中運行下面的代碼。我需要知道的是如何將y的值存儲在行V=max(u(j) + y for y in set2)中。該行獲得set1和set2的每個值的最大總和。換句話說,對於代碼的第一次迭代,最大值爲3(set1爲1,set2爲2),那麼我想將數字2存儲在某處。Python一行循環兩個函數

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 

我知道一個解決方案是做一個額外的循環,我寧願做一行。

問候,

+1

...您的預期輸出是什麼?請不要使用'lambda'。如果你要*命名你的匿名函數*,那麼你*不應該使用匿名函數語法*而只是使用正常的函數定義。 –

+0

感謝您的建議!當前輸出是3,4,5,它是set1和set2中每個元素的最大總和。我想得到一個元組(3,2,1),(4,2,2),(5,2,3)。包括構成該總和的總和和每個元素。 –

回答

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與沒有任何關係在生成器表達式中,它有它自己的作用域。我可以輕鬆地將它稱爲任何我想要的:

>>> for j in set1: 
...  V, fish = max((u(j) + y, y) for y in set2) 
...  print(V, fish) 
... 
3 2 
4 2 
5 2