2016-05-22 6 views
0

これはおそらく些細なことですが、まともな解決策が見つからない、または間違ったことを探しているようです。Pythonラムダの出力

私はこれを呼び出すとき:

validation_data = validation.map(tuple)

私は次の出力を得る:

[(61.0, 3864.0), (61.0, 3889.0)] 

は私が実際に結果は整数になりたいので、私は、この代わりにコードを変更:

validation_data = validation.map(lambda xs: [int(x) for x in xs]) 

出力のフォーマットが変更されました(角かっこのように角括弧で囲まれていることに注意してください)

[[61, 3864], [61, 3889]] 

ここで何が起こるのかよくわかりません。なぜ出力形式が変わるのですか?そして、元の[()]フォーマットを[[]]の代わりに保持するにはどうすればよいですか?

+1

'validation'は何ですか? –

+0

これは角カッコです。角括弧は '<>'です。 –

+0

投稿を編集しました。 :) – sweaves

答えて

2
validation_data = validation.map(lambda xs: tuple(int(x) for x in xs)) 

これは基本的には、質問の最初の文と2番目の文を組み合わせたものです。 tupleを使用したか、または最初の文が冗長であったため、初めて丸括弧を付けた唯一の理由がありました。

tuple(int(x) for x in xs)は、Python構文の特別な機能です。それはtuple((int(x) for x in xs))の略です。その議論は生成者の理解であり、関数が生成者の理解度である単一の引数を持つとき、余分な丸括弧を削除することができます。 tuple([int(x) for x in xs])も動作し、あなたのコードに近いでしょう。

あなたはまた、行うことができます:

validation_data = validation.map(lambda xs: tuple(map(int, xs))) 
+0

それは、ありがとう、それを得た。 – sweaves