2017-06-28 22 views
0

私はオブジェクトのリストを持っています。それぞれのリストは物のリストを持っています。私はすべてのオブジェクトに保持されているもののリストを作成したいと思います。これを行うもっとpythonicな方法がありますか?オブジェクトのアイテムからアイテムのリストを作成する

class Holder(object): 
    def __init__(self, things): 
     self.things = things 

holder_one= Holder([1, 2]) 
holder_two = Holder(['a', 'b']) 

holders = [holder_one, holder_two] 

all_things = [] 
for holder in holders: 
    for thing in holder.things: 
     all_things.append(thing) 
print all_things 

答えて

1

あなたは可能性があり、次のいずれか

  1. listからHolder継承を行い、これは非常に簡単になります。あなたの明示的なループを保存します

  2. 利用代わりappendextend、:

    all_things = [] 
    for holder in holders: 
        all_things.extend(holder.things) 
    print all_things 
    
+0

おかげで、本当のHolderクラスは、単にリストを保持するよりも、はるかに多くのことを行います。この例は、質問のために非常に単純化されており、ホルダーがリスト – Psionman

+0

を継承することは実際的ではないので、 'extend'を使用してください。 – DeepSpace

+0

ありがとう。トリックはしますか? – Psionman

関連する問題