2016-07-29 4 views
0

オブジェクトのリストを返す方法とここにはリストしません。私は、テストオブジェクトのリストではなくSTRのリストを返したい ...lambda、pythonでオブジェクト配列をマップする - オブジェクトのリストを返す

class test: 
    val = "" 
    def __init__(self,v): 
     self.val = v 
    def tolower(self,k): 
     k = k.val.lower() 
     return k 

def test_run(): 
    tests_lst = [] 
    tests_lst.append(test("TEST-0")) 
    tests_lst.append(test("TEST-1")) 
    tests_lst.append(test("TEST-2")) 
    i_want_object_of_test = map(lambda x:x.val.lower(),tests_lst) 

if __name__ == '__main__': 
    test_run() 

OUTPUT: [ 'テスト-0'、 'テスト1'、 'テスト-2']

私は、各オブジェクトのvalが小文字に変更されたテストオブジェクトのリストが必要です。

+1

質問が不明です。どんな出力が期待されているのか、どんな出力が得られているのかを明確に述べてください。あなたの現在のコードが出力されていないか、何も印刷されていません... – Julien

+0

テストオブジェクトのリストを返すmap(lambda x:x.val.lower()、tests_lst)が必要です。代わりに文字列のリストを返します。 – digicoder

+0

まず、クラス本体に'val = "" 'を書くと、それはインスタンス属性ではなくクラスレベルの*変数です。 Javaのような言語から来ていますか? '__init__'の後に' self.val = v'と書くと、クラス変数を陰にするインスタンス変数を作成します。とにかく、 'val.lower()'は、マップによって返されるリストを埋める文字列を返します。マップはデータの変換を目的とした機能的な構造であり、状態を変更するためには使用しないでください(本当に必要な場合でも可能です)。代わりにforループを作成します。for x in test_list:x.val = x.val.lower() ' –

答えて

0

質問は不明です。私が理解しているところで私は答えます。

私が理解しているのは、小文字の値を持つテストオブジェクトの新しいリストを作成しようとしていることです。

あなたはこれを行うことができますいずれか(変化状態は通常推奨されません)forループ内の各オブジェクトの状態を変更することによって:リスト内包を通してそれを行うには

for test_obj in test_lst: 
    test_obj.val = test_obj.val.lower() 

方法を作成することです新しいテスト・インスタンス:

  • それ私:

    i_want_object_of_test = [test(test_obj.val.lower()) for test_obj in test_lst] 
    

    はまた、あなたのテストクラスを持ついくつかの問題がありますクラスのオブジェクトから継承する必要があります。class test(object):

  • クラスの定義にval = ""'を入れてクラス変数を定義し、各インスタンスでオーバーライドします。
  • あなたのtolowerメソッドは別のテストインスタンス(k)を取得し、その値を小文字で返します。私は新しいテストオブジェクトを返すか、現在のテストオブジェクトをその場で変更したいと思っています。どちらの方法でも、この方法ではselfのみ使用してください。
+0

[test_obstのtest_objのtest_obj.val.lower()]は私が探していた魔法の行です、私は反復中にオブジェクトの状態を変更しないことに気付いています。 Pythonのガイドラインについても助けてくれてありがとう。 – digicoder

+0

私はcar(object)を持っていて、Engine(object)のインスタンスであるエンジンを持っていて、エンジンがval = ""というテキストプロパティを持っていた場合、valプロパティをすべて小文字に変更したかったのです。あなたは助けてください。 – digicoder

+0

@digicoderすべてのエンジンの状態を変更するか、すべての車のエンジンを変更するか、またはそれらのコピーをすべて作成するかによって異なります。 –

関連する問題