2017-04-03 13 views
0

私は現在Pythonで以下のコードを実行しています。私が知る必要があるのは、という行にyという値をどのように保存できるかです。この行は、set1とset2の各値の最大合計を取得します。言い換えれば、最大値が3(set1の場合は1、set2の場合は2)のコードの最初の反復では、2番の数値をどこかに格納したいと考えています。Python 1行の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 

私は1つの解決策が追加ループを行うことを知っています。私はそれを1行で行うことをお勧めします。

よろしく、

+1

...期待されている出力は何ですか?とにかくラムダを使わないでください。 *あなたの匿名関数に*名前をつけるつもりなら、あなたは*匿名関数構文*を使うべきではなく、通常の関数定義を使うべきです。 –

+0

アドバイスをいただきありがとうございます!現在の出力は、set1の各要素とset2の最大合計である3,4,5です。私はタプル(3,2,1)、(4,2,2)、(5,2,3)を取得したいと思います。その合計を構成する各要素と合計を含みます。 –

答えて

0

あなたは、いくつかのコンテナ(tupleがここに自然な選択である)で一緒にyを保つことができます。余談として

>>> 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 

、私はあなたの他の節が思う何であるか見当がつかないんが、私はあなたが常に実行され、それを知って希望に、その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